我创建了一个模块,只需单击一个按钮,即可创建一个具有特定名称的新隐藏工作表。该特定名称也会添加到初始工作表的列表中。我希望模块在初始工作表中自动创建一个新按钮,单击该按钮将打开最初创建的隐藏工作表。我是该领域的新手,因此,如果这个问题不符合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
答案 0 :(得分:0)
您可以使用excel中的development-tab创建一个按钮。有一个名为“插入”的按钮,然后插入“ 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
请注意此处:据我所知,您不知道如何使用按钮运行代码。我认为您的代码有效。
答案 1 :(得分: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
更新为ActiveWorkbook
。
ThisWorkbook
始终是包含正在运行的代码的书。
就像上面所说的,ActiveWorkbook
是当前处于活动状态的工作簿。