如何通过键入部分名称跳转到工作表

时间:2018-04-05 23:33:14

标签: excel excel-vba vba

我使用以下代码跳转到工作表。它需要输入确切的名称才能找到。有没有办法让它通过键入部分工作表名称跳转到工作表?

例如,我有一个大型工作簿,其中包含按其ID和货币命名的工作表。如果我知道ID而不是货币,我希望能够跳转到表格。

enter image description here

我的代码:

Sub SelectSheet()
 Dim i As Variant
 Dim ws As Worksheet
 i = Application.InputBox("Enter worksheet name", "Select sheet")

'Cancel was pressed
 If i = False Or Trim(i) = "" Then Exit Sub

'Check if sheet exist
 On Error Resume Next
 Set ws = Sheets(i)
 On Error GoTo 0

If ws Is Nothing Then
 MsgBox "Worksheet " & i & " not found!"
 Else
 Sheets(i).Select
 End If
 End Sub

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这将在每个工作表名称的开头进行部分名称匹配。根据您的需要进行相应调整。

它的工作原理是匹配每个工作表名称的第一个x个字符数,其中x的值由您输入的字符数决定。您可能需要处理大小写转换(例如,将输入转换为大写以消除区分大小写)。

Sub SelectSheet()
  Dim Temp As Variant
  Dim ws As Worksheet
  Temp = Application.InputBox("Enter worksheet name", "Select sheet")

  'Cancel was pressed
  If Temp = False Or Trim(Temp) = "" Then Exit Sub

  'Check if sheet exist
  On Error Resume Next

  For i = 1 To Sheets.Count
    If Left(Sheets(i).Name, Len(Temp)) = Temp Then  ' Match first letters
      Set ws = Sheets(i)                            ' Found it
    End If
  Next

  Set ws = Sheets(i)
  On Error GoTo 0

  If ws Is Nothing Then
    MsgBox "Worksheet " & Temp & " not found!"
  Else
    ws.Select
  End If
End Sub