Excel加载项插入模板工作表

时间:2016-06-02 17:53:15

标签: excel vba excel-vba

我在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 。还有另一种方法可以达到这个目的吗?

3 个答案:

答案 0 :(得分:2)

您是加载项:您居住在应用程序级别。 ThisWorkbook是你,ActiveWorkbook是活动的工作簿,(如果有的话)

您的代码假设有一个活动工作簿,如果ActiveWorkbookNothing时运行,则会出现运行时错误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

然后使用templateCopyActiveWorkbook重命名并将复制的工作表移动到/如果需要。

您不需要隐藏模板表(然后取消隐藏其副本),因为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