1

我有一个名为“摘要”的摘要表,上面有一个链接。此链接转到以下子:

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

4

3 回答 3

2

以下是我为使事情顺利进行所做的:我摆脱了GoToWorksheet子程序。然后我使WTButton子看起来像这样:

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

这使它更直接[注:我从别人那里接手了这个项目]

于 2013-08-09T20:54:57.177 回答
0

未经测试,但应该可以工作......

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
于 2013-08-08T16:01:31.770 回答
0

不需要,With它不测试xlVeryHidden

我会这样写例程:

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

为了测试,为了发现错误的确切位置,我会注释掉所有的错误处理

于 2013-08-08T16:35:14.120 回答