input框的图纸select问题

我有以下代码的Excel VBA文件。 我的问题是, InputBox不能正常工作。 有10张。 第一张被称为“菜单”。 其他表如表2 – 10.表3,4和5应用VeryHidden 。 请帮我纠正它。

 Private Sub CommandButton1_Click() Dim Sh As Worksheet For Each Sh In ThisWorkbook.Worksheets If Sh.Name <> "Menu" Then Sheet3.Visible = xlSheetVeryHidden Sheet4.Visible = xlSheetVeryHidden Sheet5.Visible = xlSheetVeryHidden End If Next Sh Dim myList As String Dim i As Integer Dim mySht i = 1 For Each oSheet In ActiveWorkbook.Sheets If oSheet.Visible <> xlSheetVeryHidden Then myList = myList & i & " - " & oSheet.Name & " " & vbCr i = i + 1 End If Next oSheet mySht = InputBox("Select Sheet to go to." & vbCr & myList) ActiveWorkbook.Sheets(CInt(mySht)).Select End Sub 

就像我在上面的评论中所说的那样; 问题是Sheets(CInt(mySht))

问题

当你指定一个数字,比如说3 ,那么代码Sheets(CInt(mySht))变成Sheets(3) 。 但是这不是你想要的。 您需要该号码后面的名称,因为您将该号码与" - "连接起来,然后与工作表名称连接起来。 Sheets(3)实际上可能指的是隐藏的表格,而不是第三个可见表格,因此你得到的错误。

选项

  1. 而不是使用myList ,使用数组。
  2. 在用户做出select之后拆分数组,然后转到该表

这是你正在尝试?

 Private Sub CommandButton1_Click() Dim Sh As Worksheet Dim ShName As String Dim i As Integer Dim mySht, MyAr For Each Sh In ThisWorkbook.Worksheets Sh.Visible = xlSheetVisible Next Sh Sheet3.Visible = xlSheetVeryHidden Sheet4.Visible = xlSheetVeryHidden Sheet5.Visible = xlSheetVeryHidden For Each Sh In ThisWorkbook.Worksheets If Sh.Visible = xlSheetVeryHidden Then i = i + 1 Next Sh ReDim MyAr(1 To ThisWorkbook.Sheets.Count - i) i = 1 '~~> Store the names of all visible sheets in the array For Each Sh In ActiveWorkbook.Sheets If Sh.Visible = xlSheetVisible Then MyAr(i) = i & " - " & Sh.Name i = i + 1 End If Next Sh '~~> Get user input mySht = InputBox("Select Sheet to go to." & vbCr & Join(MyAr, vbNewLine)) If IsNumeric(mySht) Then '~~> Get the actual sheet name using split as '~~> we had actually appended " - " to it earlier ShName = Trim(Split(MyAr(mySht), " - ")(1)) '~~> Activate the sheet ThisWorkbook.Sheets(ShName).Activate End If End Sub