2013-10-01 90 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

相關問題