我有一个代码隐藏了电子表格中的所有工作表,除了一个。此外,在主页上,当我双击E列上的单元格时,它会将我重定向到其中一个隐藏的工作表。问题是,它正在重新指导我错误的表格,我不知道为什么。请参阅下面的代码。
当我点击手机" E3"我想去"表1"相反,我正被重新导向"表2"。所有这些都发生在我被重定向到下面直接提到的表格而不是所需的表格。
Private Sub Worksheet_Activate()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Main" Then
ws.Visible = True
Else
ws.Visible = False
End If
Next ws
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address
Case "$E$3"
Sheets("Sheet 1").Visible = True
Sheets("Sheet 1").Activate
Case "$E$4"
Sheets("Sheet 2").Visible = True
Sheets("Sheet 2").Activate
Case "$E$5"
Sheets("Sheet 3").Visible = True
Sheets("Sheet 3").Activate
End Select
End Sub
答案 0 :(得分:3)
我谦虚地建议你删除每个工作表代码表中的重复代码,并将所有可操作的代码汇总到ThisWorkbook代码表中。
Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If LCase(Sh.Name) = "main" Then
Cancel = True
Select Case Target.Address
Case "$E$3"
Worksheets("Sheet1").Visible = True '<~~ see footnote ¹
Worksheets("Sheet1").Activate
Case "$E$4"
Worksheets("Sheet2").Visible = True
Worksheets("Sheet2").Activate
Case "$E$5"
Worksheets("Sheet3").Visible = True
Worksheets("Sheet3").Activate
Case Else
'do nothing
End Select
ElseIf Target.Address = "$A$1" Then
Cancel = True
Worksheets("Main").Visible = True
Worksheets("Main").Activate
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Sh.Visible = False
End Sub
只要双击任何其他工作表上的A1,就会返回主工作表。
¹我已将工作表的名称从Sheet 1
更改为Sheet1
。