2013-10-01 67 views
0

我已经使用VBA创建了一个加载项,它是一个包含计算的工作簿。该加载项具有一个用户窗体,用于从访问数据库提取相关信息并填充工作簿。填充数据后,将在Sheet1中执行计算。我需要将工作表“Sheet1”从加载项工作表粘贴到运行加载项宏的新工作簿中。在Excel加载项中选择工作表以运行VBA宏

但是,当我运行加载项时,工作表似乎被隐藏,所以我的数据没有更新。我收到此错误: “运行时错误'1004':对象'_Global'的方法'工作表'失败”。

有人能告诉我如何使用加载项,该加载项具有执行所需计算的工作表?

迷人的部分是当我加载插件后,从Excel中的加载项列表中删除它,它运行完美。但是,当我重新运行宏时,工作表变为隐藏状态,所以出现相同的错误。我对VBA相当陌生,所以任何建议,将不胜感激!

编辑

代码:

Private Sub OptionOK_Click() 'On selecting OK from userform 
    Dim ws1 As Worksheet 
    Sheets("Sheet1").Visible = True 
    Set ws1 = Worksheets("Sheet1") 

'User Form Validation 
    If Trim(Me.cboData.value) = "" Then 
    Me.cboData.SetFocus 
    MsgBox "Please complete the form" 
    Exit Sub 
    End If 

'copies data to given cell in excel  
    ws1.Range("A1").value = Me.cboData.value 

'To copy selection from "Sheet1" into new workbook 
Workbooks("myaddin.xlam").Sheets(1).Copy 
End Sub 

我得到...>表( “工作表Sheet1”)可见=真正的错误。

回答

3

我刚刚意识到我必须在附加的VBA代码中使用“ThisWorkbook”。工作簿内

Set ws1 = ThisWorkbook.Sheets ("Sheet1")

VBA代码应使用“的ThisWorkbook”来引用到外接内侧片材或范围。

0

如果您知道它是什么表,并且您有权访问加载项代码,请确保它在引发错误的行之前是可见的。

Sheets("Sheet3").Visible = True 

我怀疑你有另一个问题,虽然因为你仍然可以引用代码中的隐藏表。


你确定这行是正确的:

Workbooks("myaddin.xlam").Sheets(1).Copy 

之前你被引用表的名称现在您引用的表在工作簿中的位置。

+0

谢谢,我确实尝试过。我有 昏暗的WS1作为工作表 工作表( “工作表Sheet1”)可见=真 集WS1 =工作表( “工作表Sheet1”) 我得到这个错误:运行时错误9,下标越界。我也在网上搜索,但我没有看到任何相关的解决方案。 – VBAlearner

+0

感谢您的编辑。 cbo是用户表单中的组合框。 me.cboData指使用访问数据库形成列表的组合框。 – VBAlearner

+0

是的,我相信我们可以参考工作表(“Sheet1”)或工作表(1)。就像我之前提到的那样,当我卸载并在Excel中重新安装时,插件运行完美。当我第一次运行宏时,它会挂在我身上。 – VBAlearner

相关问题