单击单元格以重定向到其他工作表

时间:2017-10-13 17:43:43

标签: excel vba excel-vba

我有一个代码隐藏了电子表格中的所有工作表,除了一个。此外,在主页上,当我双击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

1 个答案:

答案 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