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

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

0 голосов
/ 14 января 2019

У меня есть этот 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 Ответ

0 голосов
/ 14 января 2019

Нет необходимости (и рекомендуется) использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...