Добрый день,
Прошу помочь написать макрос, который удалял бы в массиве данных столбцы по выбранному критерию. Например, удалить столбцы, на пересечении с которыми в шапке (или в i-ой строке массива данных) встречается выражение "....".
За основу я взял аналогичный макрос, который удаляет строки по обозначенному критерию. Но мне не удается переписать его, заменив "rows" на "columns" и наоборот.
'Удаление всех отобранных строк
Прошу помочь написать макрос, который удалял бы в массиве данных столбцы по выбранному критерию. Например, удалить столбцы, на пересечении с которыми в шапке (или в i-ой строке массива данных) встречается выражение "....".
За основу я взял аналогичный макрос, который удаляет строки по обозначенному критерию. Но мне не удается переписать его, заменив "rows" на "columns" и наоборот.
'Удаление всех отобранных строк
Код |
---|
Sub Rows_Delete_If() Dim msg, style, title, Help, Ctxt, Response, MyString Dim region As Range, col As Range, checkrange As Range, delrange As Range Dim cell As Range On Error Resume Next If TypeName(Selection) <> "Range" Then Exit Sub x = ActiveCell.Value Set region = ActiveCell.CurrentRegion Set col = ActiveCell.EntireColumn Set checkrange = Intersect(region, col) If Len(col.Address) > 5 Then colName = Mid(col.Address, 2, 2) Else colName = Mid(col.Address, 2, 1) End If msg = "Сейчас будут удалены все строки, " & vbCrLf & " где в столбце " & colName & " есть значение '" & x & "'." & vbNewLine & "Продолжить?" style = vbYesNo + vbCritical + vbDefaultButton2 title = "Выборочное удаление строк" Response = MsgBox(msg, style, title) If Response = vbYes Then Call Intro Call SaveUndoInfo(ActiveSheet.UsedRange) For Each cell In checkrange If cell.Value = x Then If n = 0 Then Set delrange = cell.EntireRow n = 1 Else Set delrange = Union(delrange, cell.EntireRow) End If End If Next delrange.Delete End If Call Outro Application.OnUndo "Отменить удаление строк", "RestoreUndoInfo" End Sub |