我创建了一个模块,通过单击按钮创建一个具有特定名称的新隐藏工作表。特定名称也会添加到初始工作表的列表中。我希望模块在初始工作表中自动创建一个新按钮,单击该按钮时,将打开最初创建的隐藏工作表。我是这方面的新手,所以如果这个问题不符合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
通常最好在变量中存储对新工作表的引用。您不需要依赖工作表的位置或名称 - 这两者都可以由用户更改。
此代码为按钮提供了与其指向的工作表相同的名称(我希望这不会导致命名约定出现任何问题)。 按下按钮时运行的代码会查看按钮名称并激活该工作表。
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
更新为ActiveWorkbook
。
ThisWorkbook
总是包含正在运行的代码的书。
正如它所说,ActiveWorkbook
是目前活跃的工作簿。
您可以使用excel中的开发选项卡创建一个按钮。有一个名为“插入”的按钮,然后你插入一个“Active-X按钮”注意也有命令按钮,但它们是为了与旧版本的兼容性。不要使用它们。通过单击Excel中开发选项卡中的设计模式按钮,可以进入设计模式。
当您处于设计模式时,双击按钮,它将显示如下内容:
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
请注意:由于我了解您的问题,您不知道如何使用按钮运行代码。我假设您的代码有效。