我在Excel 2016的功能区上构建Excel添加。我当前有一个按钮,单击该按钮会触发一个宏,该宏应该将模板插入到工作簿中。
到目前为止,我试图通过在加载项中隐藏工作表然后尝试通过按下按钮来切换它的可见性来实现此目的:
redis.addCache("cache4")
不幸的是它没有工作,我收到了'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Insert the R2A sheet into the Excel file
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub insertSheet()
ActiveWorkbook.Sheets("R2A").Visible = 1
ActiveWorkbook.Sheets("R2A").Select
End Sub
。还有另一种方法可以达到这个目的吗?
答案 0 :(得分:2)
您是加载项:您居住在应用程序级别。 ThisWorkbook
是你,ActiveWorkbook
是活动的工作簿,(如果有的话)。
您的代码假设有一个活动工作簿,如果ActiveWorkbook
为Nothing
时运行,则会出现运行时错误91。
但这不是你问的问题。
在此上下文中 下标超出范围意味着ActiveWorkbook.Sheets("R2A")
不存在。如果我正确理解您要执行的操作,名为“R2A”的工作表将位于ThisWorkbook
(加载项的“隐藏”工作簿)中,而不是在活动工作簿中。
该表格在您的加载项中具有特定含义。给它一个代码名称(即在属性窗格(F4)中,设置其(name)
属性),然后通过它来引用它。例如,将其称为TemplateSheet
,然后将其复制:
If ActiveWorkbook Is Nothing Then Exit Sub
TemplateSheet.Copy ActiveWorkbook.Sheets(1)
Dim templateCopy As Worksheet
Set templateCopy = ActiveWorkbook.ActiveSheet
然后使用templateCopy
和ActiveWorkbook
重命名并将复制的工作表移动到/如果需要。
您不需要隐藏模板表(然后取消隐藏其副本),因为ThisWorkbook
(加载项的工作簿)不作为工作簿存在在Excel中(它是一个加载项!)。
答案 1 :(得分:0)
创建工作表并将其隐藏在后台是有限制的,考虑到动态添加工作表的代码非常简单:
Option Explicit
Public Sub insertSheet()
Dim i As Integer
i = Sheets.Count
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(i + 1).Select
End Sub
这将在最后一张纸的末尾添加一张纸,然后选择它。
答案 2 :(得分:0)
据我所知,True
不是1,而是VBA中的-1。在VBE的immediate
窗口中尝试这个:
CDbl(true)
如果我是对的,那么你可能想要改变
ActiveWorkbook.Sheets("R2A").Visible = 1
到
ActiveWorkbook.Sheets("R2A").Visible = True
另外,您可能想尝试
ActiveWorkbook.Worksheets("R2A").Activate