Возможно ли сделать - VB

Узнай цену своей работы

Формулировка задачи:

Уважаемые помогите пожалуйста ,возможно ли сделать :макрос В строке ФИО при наличии слово удалить Чтоб удалились только данные ФИО долж. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Вс. часов Ночные Празд. Норма. А те люди которые ниже, поднялись со всеми данными (т,е не было пустой строки ) Удаление всей строки не подходит !Заранее благодарен!

Решение задачи: «Возможно ли сделать»

textual
Листинг программы
Option Explicit
Public Const ПерваяСтрокаДанных As Integer = 6
Public Const ПоследняяСтрокаДанных As Integer = 20
Public Const ПервыйСтолбецДанных As Integer = 2
Public Const ПоследнийСтолбецДанных As Integer = 38

Sub DelStr()
    Dim sRange As String
    Dim i As Integer
    Dim r As Range
    
    ' Ищем строки для удаления и формируем строку диапазона
    For i = ПерваяСтрокаДанных To ПоследняяСтрокаДанных
        If Cells(i, ПервыйСтолбецДанных) = "Удалить" Then
            sRange = sRange & IIf(Len(sRange) = 0, "", ",") _
                   & Split(Cells(i, ПервыйСтолбецДанных).Address, "$")(1) _
                   & CStr(i) & ":" _
                   & Split(Cells(i, ПоследнийСтолбецДанных).Address, "$")(1) _
                   & CStr(i)
        End If
    Next i
    ' удаляем/подчищаем
    If sRange <> "" Then
        ' удаляем ячейки диапазона со сдвигом вверх
        Range(sRange).Delete Shift:=xlUp
        
        ' исправляем нумерацию в первой колонке
        Range(Cells(ПерваяСтрокаДанных, 1), Cells(ПоследняяСтрокаДанных, 1)).ClearContents
        ' ставим начальные цифирки
        Cells(ПерваяСтрокаДанных, 1) = 1
        Cells(ПерваяСтрокаДанных + 1, 1) = 2
        ' ищем фактически последнюю заполненную строку
        i = Cells(ПерваяСтрокаДанных, ПервыйСтолбецДанных).End(xlDown).Row
        ' формируем диапазон
        sRange = Split(Columns(1).Address, "$")(2) & CStr(ПерваяСтрокаДанных) _
               & ":" & Split(Columns(1).Address, "$")(2) & CStr(i)
        ' проставляем нумерацию
        If sRange <> "" Then
            Set r = Worksheets("Табель").Range(Cells(ПерваяСтрокаДанных, 1), Cells(ПерваяСтрокаДанных + 1, 1))
            r.AutoFill Destination:=Worksheets("Табель").Range(sRange), Type:=xlFillDefault
        End If
    End If
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы