激活工作簿Excel 2010中的隐藏工作表

我有一个名为“摘要”的摘要表,其中有一个链接。 此链接转到以下子节点:

Sub WTButton() Call GoToWorksheet("Wilmington") End Sub 

正如你所看到的,这会调用另一个名为GoToWorksheet子。 它看起来像这样:

 Sub GoToWorksheet(strWorksheet As String) On Error GoTo Err_GoToWorksheet With Worksheets("Summary") If Worksheets(strWorksheet).Visible = xlSheetHidden Then Worksheets(strWorksheet).Visible = xlSheetVisible End If Worksheets(strWorksheet).Activate End With Exit_GoToWorksheet: Exit Sub Err_GoToWorksheet: MsgBox Err.Description, vbCritical, "GoToWorksheet Error" Resume Exit_GoToWorksheet End Sub 

我希望工作表保持隐藏状态,直到最终用户准备向其中添加数据为止。 如果工作表已经可见,整个系统工作的很好。 如果工作表已隐藏,则不会显示该工作表,也不会激活它。

我究竟做错了什么?

链接到文件: https : //www.dropbox.com/s/wsv9al410m7kwda/Book1Test.xlsm

没有testing,但应该工作…

 Sub GoToWorksheet(strWorksheet As String) On Error GoTo Err_GoToWorksheet With Worksheets(strWorksheet) If .Visible = xlSheetHidden Then .Visible = xlSheetVisible End If .Activate End With Exit_GoToWorksheet: Exit Sub Err_GoToWorksheet: MsgBox Err.Description, vbCritical, "GoToWorksheet Error" Resume Exit_GoToWorksheet End Sub 

With不是必需的,它不会testingxlVeryHidden

我会这样写例程:

 Option Explicit 'This makes sure I find spelling errors Sub GoToWorksheet(strWorksheet As String) On Error GoTo Err_GoToWorksheet 'Should only fail if worksheet name is wrong Worksheets(strWorksheet).Visible = xlSheetVisible 'just make it visible - don't care what state it was in previously Worksheets(strWorksheet).Activate Exit Sub Err_GoToWorksheet: MsgBox Err.Description, vbCritical, "GoToWorksheet Error" End Sub 

并进行testing,以发现错误的确切位置,我将注释掉所有的error handling

以下是我做的工作:我摆脱了GoToWorksheet子例程。 然后我做WTButton子看起来像这样:

 Sub WTButton() Worksheets("Wilmington").Visible = xlSheetVisible Worksheets("Wilmington").Activate Range("A3").Select End Sub 

这使得它更直接[注:我从别人手中接pipe了这个项目]

无论如何,感谢所有的build议。