搜索工作表

时间:2019-01-14 13:13:48

标签: excel vba

我有这个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 :(得分:3)

在这种情况下,不需要(也没有推荐)使用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