поиск рабочих листов

Вопрос задан: 8 месяцев назад Последняя активность: 8 месяцев назад
up 0 down

У меня есть этот код VBA, поиск по названию листов, код работает.

Как я могу изменить его, чтобы искать только частичное имя? полное имя собака, частичное имя до *, что-то вроде этого...

Dim xName As String
Dim xFound As Boolean

xName = InputBox("הכנס/י שם ספק לחיפוש בקובץ", "Sheet search")

If xName = "" Then Exit Sub

On Error Resume Next
ActiveWorkbook.Sheets(xName).Select
xFound = (Err = 0)
On Error GoTo 0

If xFound Then    
Else
    MsgBox ("הספק " & xName & " לא נמצא")        
End If

1 ответ

up 3 down accepted

Там нет необходимости (и рекомендуется) использовать On Error Resume Next в этом сценарии.

Прокрутите таблицы и сравните имя таблицы со значением, которое вы ищете. Вы можете использовать подстановочный знак *, или используйте Instr функция.

Dim xName As String
Dim xFound As Boolean
Dim Sht As Worksheet

xName = InputBox("הכנס/י שם ספק לחיפוש בקובץ", "Sheet search")

For Each Sht In ThisWorkbook.Worksheets
    If Sht.Name Like xName & "*" Then ' sheet name found
        ' do something
        xFound = True ' raise flag

        Exit For
    End If
Next Sht

If xFound = False Then
    MsgBox ("הספק " & xName & " לא נמצא")
End If

Примечание: старайтесь не использовать ивритские символы при кодировании в VBA, это только даст вам горе в будущем (я прекратил это 15 лет назад).


Если вы хотите использовать Instr функция, используйте что-то вроде кода ниже:

If InStr(Sht.Name, xName) > 0 Then  ' <-- Using Instr