用于创建导致隐藏工作表的按钮的VBA代码

问题描述 投票:1回答:2

我创建了一个模块,通过单击按钮创建一个具有特定名称的新隐藏工作表。特定名称也会添加到初始工作表的列表中。我希望模块在初始工作表中自动创建一个新按钮,单击该按钮时,将打开最初创建的隐藏工作表。我是这方面的新手,所以如果这个问题不符合Stack Overflow的标准,我会道歉。我目前的代码是:

Set ws = Sheets("INPUT")

financing = ws.Range("E2").Value
compName = ws.Range("E3").Value

lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Cells(lastRow, 1) = financing
ws.Cells(lastRow, 2) = compName

ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveWorkbook.Sheets(Worksheets.Count).Name = compName & "-" & financing
ActiveWorkbook.Sheets(compName & "-" & financing).Visible = xlSheetHidden
excel vba excel-vba
2个回答
0
投票

通常最好在变量中存储对新工作表的引用。您不需要依赖工作表的位置或名称 - 这两者都可以由用户更改。

此代码为按钮提供了与其指向的工作表相同的名称(我希望这不会导致命名约定出现任何问题)。 按下按钮时运行的代码会查看按钮名称并激活该工作表。

Sub AddButton()

    Dim btn As Button
    Dim wrkSht As Worksheet

    Set wrkSht = ThisWorkbook.Worksheets.Add
    With wrkSht
        .Name = "compNameValue - FinancingValue"
        .Move After:=Sheets(ThisWorkbook.Worksheets.Count)
        .Visible = xlSheetVeryHidden
    End With

    Set btn = ThisWorkbook.Worksheets("Sheet1").Buttons.Add(20, 20, 20, 20)
    With btn
        .ShapeRange.IncrementTop 100
        .ShapeRange.IncrementLeft 100
        .OnAction = "MacroTest"
        .Name = wrkSht.Name
    End With

End Sub

Sub MacroTest()

    With ThisWorkbook.Worksheets(Application.Caller)
        .Visible = xlSheetVisible
        .Activate
    End With

End Sub

您可能需要根据需要将ThisWorkbook更新为ActiveWorkbookThisWorkbook总是包含正在运行的代码的书。 正如它所说,ActiveWorkbook是目前活跃的工作簿。


0
投票

1 Create a button

您可以使用excel中的开发选项卡创建一个按钮。有一个名为“插入”的按钮,然后你插入一个“Active-X按钮”注意也有命令按钮,但它们是为了与旧版本的兼容性。不要使用它们。通过单击Excel中开发选项卡中的设计模式按钮,可以进入设计模式。

2 Enter the Code in the CommandButton_Click() module

当您处于设计模式时,双击按钮,它将显示如下内容:

Private Sub BUTTONNAME_click()
' Enter Code here OR even better call code from module
Sub End

然后,您可以提前输入代码,或者甚至更好地从模块中调用代码。按钮代码将如下所示:

Private Sub BUTTONNAME_click()
call modulename.subname()
Sub End

模块代码如下所示:

Sub Subname() 
Set ws = Sheets("INPUT")

financing = ws.Range("E2").Value
compName = ws.Range("E3").Value

lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Cells(lastRow, 1) = financing
ws.Cells(lastRow, 2) = compName

ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveWorkbook.Sheets(Worksheets.Count).Name = compName & "-" & financing
ActiveWorkbook.Sheets(compName & "-" & financing).Visible = xlSheetHidden
End Sub

请注意:由于我了解您的问题,您不知道如何使用按钮运行代码。我假设您的代码有效。

© www.soinside.com 2019 - 2024. All rights reserved.