我有一个工作簿,可以将工作表复制并移动到新工作簿并将其保存到选定目标。我已将代码保存到该工作表中,以便将其转移到新工作簿。我需要编码,以便它将宏名称分配给工作簿中的形状。
因此编辑前的代码如下所示:
Selection.OnAction = "Sheet17.PEER_REVIEW_COMPLETED"
问题是,如果有人在工作簿中添加了一张工作表,那么工作表不再是工作表17.因此,我在一个单元格中创建了一个公式,该公式吐出"Sheet17.PEER_REVIEW_COMPLETED"
但是17会根据有多少自动更改床单有。如何指定Selection.OnAction
来引用该单元格?
答案 0 :(得分:0)
一种方法是在单独的宏中嵌入对单元格的引用。例如,如果您的宏名称包含在以下范围名称中:
Public Sub runtest()
Application.Run Sheet2.Range("D14").Value
End Sub
您的Selection.OnAction值可以改为
Selection.OnAction = "runtest"
我不确定是否有更直接的方法可以做到这一点,或者这样做是否有任何缺点,但我只是尝试过这种方式似乎确实有效
答案 1 :(得分:0)
如果您使用worksheet.Copy
或Worksheet.Move
方法复制工作表,则可以立即获取复制工作表的代码模块名称句柄。
示例:
Dim destWB As Workbook
Set destWB = Workbooks.Open("...")
' ...
Sheet17.Move After:=destWB.Sheets(destWB.Sheets.Count)
Dim codeName As String: codeName = destWB.Sheets(destWB.Sheets.Count).CodeName
Debug.Print codeName
'...
myShape.OnAction = codeName & ".PEER_REVIE"