У меня есть следующий код:
Set User = AD_USERS.Range("D:D").Find(What:=wVal)
Где wVal - это значение, которое я ищу. Это имя пользователя, которое может иметь вид «Ecr484348» или «gh8644». Мой вопрос: как я могу использовать find для поиска полного совпадения, когда я ищу имя пользователя?
Я знаю, что если я использую xlWhole
, он будет искать полное совпадение, но если wVal = "Ecr"
даст мне, что он нашел «Ecr484348», а я этого не хочу. Я хочу, чтобы это было только в том случае, если wVal = "Ecr484348"
дает вам, что он нашел значение, я имею в виду, что я не хочу, чтобы он работал только с использованием некоторой части имени пользователя.
Извините, если что-то не очень хорошо объяснено , Отвечу, если будут вопросы. Большое спасибо за ваши ответы!
PS: Если я использую xlWhole
, как в следующем коде:
Set User = AD_USERS.Range("D:D").Find(What:=wVal, LookAt:=xlWhole)
, мне выдается ошибка 9, и я не знаю почему.
PS2: Я добавляю сюда весь код:
Dim wrdTbl As Table
'Set the Word table
With ActiveDocument
If ActiveDocument.Tables.Count >= 1 Then
Set wrdTbl = .Tables(InputBox("Table # to copy? There are " & .Tables.Count & " tables to choose from."))
End If
End With
Dim AD_UsersPath As String
AD_UsersPath = "C:\Users\" & Environ("Username") & "\Desktop\Comparar Columnas VBA\Animales.xlsx"
Dim AD_USERS As Object
Set AD_USERS = CreateObject("Excel.Application")
AD_USERS.Visible = False
AD_USERS.Application.Workbooks.Open AD_UsersPath
Dim LastRow As Integer
LastRow = wrdTbl.Columns(1).Cells.Count
Dim I As Integer
For I = 1 To LastRow
wVal = wrdTbl.Cell(I + 1, 1)
wVal = Left(wVal, Len(wVal) - 2)
Set User = AD_USERS.Range("D:D").Find(What:=wVal)
If User Is Nothing Then
wrdTbl.Cell(I + 1, 1).Shading.BackgroundPatternColor = wdColorRed
Else
wrdTbl.Cell(I + 1, 1).Shading.BackgroundPatternColor = wdColorWhite
End If
Next I
AD_USERS.Quit
Set AD_USERS = Nothing