Я пытаюсь настроить макрос vba для удаления всех идентификаторов пользователя из электронной таблицы, которые не начинаются с назначенных префиксов (например, US, A1, VM и т. Д.). Следующий блок кода был найден в библиотеке кодов и выглядит так, как мне нужно, но есть одна проблема: когда я вводю в префиксы UserID в поля vlist, он рассматривает их как абсолютные, а не часть строки, которую я хочу хранить.Использование «подстановочных знаков» в массиве vlist для удаления строк в Excel
Есть ли способ включить подстановочные знаки в vlist?
Sub Example1()
Dim vList
Dim lLastRow As Long, lCounter As Long
Dim rngToCheck As Range, rngFound As Range, rngToDelete As Range
Application.ScreenUpdating = False
With Sheet1
lLastRow = Get_Last_Row(.Cells)
If lLastRow > 1 Then
vList = Array("US", "A1", "EG", "VM")
'we don't want to delete our header row
With .Range("A2:A" & lLastRow)
For lCounter = LBound(vList) To UBound(vList)
Set rngFound = .Find(_
what:=vList(lCounter), _
lookat:=xlWhole, _
searchorder:=xlByRows, _
searchdirection:=xlNext, _
MatchCase:=True)
'check if we found a value we want to keep
If rngFound Is Nothing Then
'there are no cells to keep with this value
If rngToDelete Is Nothing Then Set rngToDelete = .Cells
Else
'if there are no cells with a different value then
'we will get an error
On Error Resume Next
If rngToDelete Is Nothing Then
Set rngToDelete = .ColumnDifferences(Comparison:=rngFound)
Else
Set rngToDelete = Intersect(rngToDelete, .ColumnDifferences(Comparison:=rngFound))
End If
On Error GoTo 0
End If
Next lCounter
End With
If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete
End If
End With
Application.ScreenUpdating = True
End Sub