我正在努力使用Excel VBA宏,該工具將在客戶端日誌文件更新時使用主日誌電子表格中的值更新電子表格的內容(稱爲客戶端活動日誌)打開。我使用的方法是複製和粘貼單元格,因爲當我嘗試直接分配值時,我總是收到錯誤。我知道這是糟糕的形式,並且我有客戶端日誌宏有時會因爲不明原因而崩潰的穩定性問題。所以我試圖清理它(並避免複製不需要的格式)。當試圖複製工作表之間的值時,獲取錯誤代碼5
我現在正在做的是:
Private Sub Workbook_Open()
...
Run "Sheet2.UpdateActivites"
End Sub
爲Sheet2中的代碼:
Sub UpdateActivites()
...
Set MasterClientListWb = _
Workbooks.Open(pathToMasterLogs & "Master Client Database.xlsx")
Set MasterClientListWs = MasterClientListWb.Sheets("Sheet1")
MasterClientListWs.Range("A2").Select
For i = 1 To MasterClientListWs.UsedRange.Rows.Count
If ActiveCell.Value = clientNumber Then
' Sets last name
ActiveCell.Offset(columnoffset:=1).Copy
Me.Range("C1").PasteSpecial
' A lot more similar statements
End If
Next i
據我瞭解,是我應該做的更像是:
Me.Cells("C1").Value = ActiveCell.Offset(columnoffset:=1).Value
但這一扔每當它運行時都會發生錯誤。我懷疑我可能指的是我正在打開的文件,而不是以某種方式錯誤地運行宏的文件。
我真的很感激任何幫助,我對vba的使用經驗很少,正如這無疑顯示的那樣。由於
我不認爲你可以分配到'.Value',這可能是來源你錯誤。此外,這是一個偉大的S.O.鏈接與如何避免使用'.Select'大量的信息:http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –
更好地寫在一個'模塊''UpdateActivies'而不是在一個「表代碼」中。而不是使用'ActiveCell',明確寫出你想要開始比較的單元格地址。 @DanWagner已經提供了可以幫助你改進代碼的鏈接。 – L42