我已經爲在Windows 7/Office 2010上執行得很好的工作編寫了一個vba腳本,只要它在單獨的Excel窗口中打開即可。在同一窗口中同時運行其他工作簿會導致錯誤。這有時候有點麻煩,但沒有那麼多,人們對它有問題,所以我從來沒有花時間去看看它。在背景表上運行Excel vba代碼
最近我們的系統已升級到Windows 8和Office 2013,它自動打開單獨的Excel窗口,但與舊系統在一個窗口中打開多個工作簿時出現的錯誤相同。發生該錯誤是因爲我正在處理另一個工作簿,並且活動工作簿不包含VBA工作簿包含的多個工作表。
我可以通過每次代碼運行時(每隔15秒)激活VBA工作簿+工作表來解決此問題,但這會強制VBA工作簿位於前端。有沒有辦法讓代碼在VBA工作簿上運行,而不是一直強迫它到前臺?此時,我無法在任何其他Excel工作表上運行我的VBA工作簿,這非常不方便。任何幫助,將不勝感激!
在這一刻我改變了一些事情
的ThisWorkbook
Private Sub Workbook_Open()
Set WB = ActiveWorkbook
Set WS = WB.ActiveSheet
End Sub
模塊MyModule的
Public WB As Workbook
Public WS As Worksheet
模塊OtherModule
Sub ColumnNamer()
Dim titleRow As Integer
Dim titlerng As Range
titleRow = 5
Set titlerng = Workbooks(WB).Sheets(WS).Range(Cells(titleRow, 1), Cells(titleRow, 50))
colFind = WorksheetFunction.Match("SEARCH_TAG", titlerng, 0)
End Sub
調用ColumnNam er Sub結果如下(手動翻譯(錯誤:編譯錯誤(預期矩陣/數組))。
評論是不適用於擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/74749/discussion-on-answer-by-etri-run-excel-vba-code-on-background-sheet)。 – Taryn 2015-04-08 19:10:47