2014-04-16 38 views
0

我正在努力使用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的使用經驗很少,正如這無疑顯示的那樣。由於

+0

我不認爲你可以分配到'.Value',這可能是來源你錯誤。此外,這是一個偉大的S.O.鏈接與如何避免使用'.Select'大量的信息:http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –

+0

更好地寫在一個'模塊''UpdateActivies'而不是在一個「表代碼」中。而不是使用'ActiveCell',明確寫出你想要開始比較的單元格地址。 @DanWagner已經提供了可以幫助你改進代碼的鏈接。 – L42

回答

0

我覺得這個樣本將幫助你鎖定你想要做什麼:

Option Explicit 
Sub UpdateActivites() 
'...other stuff 
Dim MasterClientListWb As Workbook 
Dim MasterClientListWs As Worksheet 
Dim LastRow As Long 

Set MasterClientListWb = Workbooks.Open(pathToMasterLogs & "Master Client Database.xlsx") 
Set MasterClientListWs = MasterClientListWb.Sheets("Sheet1") 

LastRow = MasterClientListWs.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

For i = 1 To LastRow 
    If MasterClientListWs.Cells(i, 1).Value = clientNumber Then '<~~ if column A value matches client number 
     MasterClientListWs.Cells(i, 3) = MasterClientListWs.Cells(i, 2).Value '<~~assign value to column C (i.e. column 3) 
    End If 
Next i 
'...other stuff 
End Sub 
+0

Will Me.Cells(i,3)工作,如Me.Cells(i,3)= MasterClientListWs.Cells(i,4)。值或我需要使用引用(或任何vba調用它)給我目前的表?我認爲你主要回答我的問題,但我需要從我打開的文件中的表格中將值複製到當前文件的表單中。 – user3229306

+0

我不熟悉'Me.Cells',所以恐怕我無法明確地回答這個問題。儘管如此,我建議使用工作表引用,因爲您永遠無法確定用戶在您的代碼運行時可能會做什麼 –

相關問題