excel 将按钮名称作为参数传递给函数或子函数以访问工作表

fdx2calv  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(204)

我试图创建一个工作簿作为一个Wiki(创建一个wiki不是一个选项...)到目前为止,我已经为每个页面创建了工作表,我有一个主页与几个按钮访问每个工作表和隐藏所有其余的,在每个工作表有一个退出->返回到主页按钮。
我想将相同的子分配给所有的按钮,这些按钮的名称(与工作表相同)作为参数,并带你到隐藏所有其他工作表的工作表。
这可能吗?到目前为止,我已经创建了多个Sub,每个按钮后藤和Exist按钮一个。
代码草案(每个按钮创建一个,因此大约45个):

Sub GoToPageName1()

Sheet("PageName1").Visible = xlSheetVisible
Worksheets("PageName1").Activate
Sheet("HomePage").Visible = xlSheetVeryHidden

End Sub

Sub ExitingPageName1()

Sheet("HomePage").Visible = xlSheetVisible
Worksheets("HomePage").Activate
Sheet("PageName1").Visible = xlSheetVeryHidden

End Sub
c2e8gylq

c2e8gylq1#

对您的问题的注解响应引用了UserForm上的按钮。如果你正在使用,那么很棒,请按照链接中的代码进行操作。
从你在问题中使用的措辞来判断,看起来你可能是在工作表本身添加按钮。如果是这样的话,那你就得走另一条路了。
诀窍是为您的按钮名称指定您正在导航的工作表名称。在下面的示例中,我将按钮命名为“Sheet1| Sheet2”等。其中,第一个名称是导航的工作表,第二个名称是导航到的工作表。
在处理程序中,您可以从Application.Caller属性访问按钮名称。所以你只需要解析这个字符串来获取你想要的数据。 backbone 代码看起来像这样:

Sub NavigationClick()
    Dim buttonName As Variant
    Dim nav() As String
    Dim fromSheet As Worksheet, toSheet As Worksheet
    
    buttonName = Application.Caller
    nav = Split(buttonName, "|")
    If (UBound(nav)) <> 1 Then Exit Sub
    
    On Error Resume Next
    With ThisWorkbook
        Set fromSheet = .Worksheets(nav(0))
        Set toSheet = .Worksheets(nav(1))
    End With
    On Error GoTo 0
    If Err.Number > 0 Then Exit Sub
    
    With toSheet
        .Visible = xlSheetVisible
        .Activate
    End With
    
    fromSheet.Visible = xlSheetVeryHidden
End Sub

每个工作表按钮都将分配给此宏。

相关问题