选择带有用户输入字符串的excel工作表

选择带有用户输入字符串的excel工作表,excel,vba,Excel,Vba,我已经做了一段时间了,我不明白为什么它不起作用。如果我使用了“New”这样的值,代码在选择工作表时会起作用,但我无法让cString工作 Sub SelectTabWithString() Dim cString As String Dim ws As Worksheet, flg As Boolean cString = Application.InputBox("Enter Characters") For Each ws In Sheets

我已经做了一段时间了,我不明白为什么它不起作用。如果我使用了“New”这样的值,代码在选择工作表时会起作用,但我无法让cString工作

Sub SelectTabWithString()


    Dim cString As String
    Dim ws As Worksheet, flg As Boolean
    cString = Application.InputBox("Enter Characters")
    For Each ws In Sheets
        If LCase(ws.Name) Like cString Then
            ws.Select Not flg
            flg = True
        End If
    Next
End Sub

我有10张纸,6张蓝色,4张绿色。其中5个蓝色的被命名为“Blue1”、“Blue2”等。我在输入框中输入了“blue”。由于某些原因,在我输入“blue”后,程序将切换回VBA窗口。

如果您有诸如“Blue1”、“Blue2”、“Blue3”等工作表名称,则如果用户输入“blue*”,当前代码将起作用

如果您希望用户只能够输入“蓝色”,则应将
If
语句更改为:

If Instr(LCase(ws.Name), LCase(cString)) > 0 Then

我每天都会学到一些新东西-我甚至不知道你可以使用
。选择False
,以便在当前选择的工作表中添加额外的工作表。FWIW-代码对我有效。您在输入框中输入了什么,当前存在哪些工作表名称?我有10张工作表,6张蓝色,4张绿色。其中5个蓝色的被命名为“Blue1”、“Blue2”等。我在输入框中输入了“blue”。出于某种原因,在我输入“blue”之后,程序只会切换回VBA窗口。啊-您需要输入“blue*”才能使类似的
正常工作。如果您希望用户能够只输入“blue”,那么应该使用
If Instr(LCase(ws.Name),LCase(cString))>0然后
.Ha!它起作用了!非常感谢你!请参阅我编辑的评论。