2016-04-21 121 views
0

我想一定值從另一個表從另一個工作簿中的VBA出類拔萃,但即時通訊剛開ERR 1004,這是我的代碼複製粘貼到另一個工作簿與if語句

Sub copiar() 
    Dim rng As Range 
    Dim cell As Range 
    Dim rng2 As Range 
    Dim cell2 As Range 


    Set rng2 = Range("A2:A5") 
    Set rng = Workbooks("perfumes.xlsx").Sheets("hoja").Range("A4:A10") 


    For Each cell In rng2 
     For Each cell2 In rng 
      If cell2 = cell Then Workbooks("perfumes.xlsx").Worksheets("Hoja 1").Range("K" & cell2.Row).Copy Range("H" & cell.Row) 
     Next cell2 
    Next cell 

End Sub 

廣東話意識到發生錯誤的位置複製 我對宏很陌生,migth需要幫助,謝謝

+0

我還有一個問題,range()是否有最大行數?因爲這是假設使用20k行 –

+0

什麼是錯誤信息?我不認爲錯誤1004總是有相同的信息。 –

回答

0

您的代碼沒有問題,因此,運行時錯誤是一個數據問題,因此在您的問題中顯示數據將有所幫助。您可以通過在此處模擬表格來顯示數據,也可以鏈接到Google電子表格,或以某種方式顯示給定行中的數據示例。

+0

結構?你的意思是工作表? –

+0

現在它複製,但只是複製0s不知道爲什麼 –

0

我對代碼很感興趣,所以我改變了一點,以便更明顯地看到它在做什麼。這段代碼完全符合OP的代碼的功能;沒有任何區別。還添加了一些評論。

Sub copiar() 
    'Dim rng As Range 
    Dim cell As Range 
    'Dim rng2 As Range 
    Dim cell2 As Range 


    'active sheet 
    'Set rng2 = ActiveSheet.Range("A2:A5") 
    'rng2.Select 

    'compare sheet 
    Dim hojaSheet As Worksheet 
    Set hojaSheet = Workbooks("perfumes.xlsx").Sheets("hoja") 
    'Set rng = hojaSheet.Range("A4:A10") 

    'source sheet 
    Dim hoja1Sheet As Worksheet 
    Set hoja1Sheet = Workbooks("perfumes.xlsx").Sheets("hoja 1") 

    'compare each cell in range in the activeSheet 
    For Each cell In ActiveSheet.Range("A2:A5").Cells 
     'to each cell in range in hojaSheet 
     For Each cell2 In hojaSheet.Range("A4:A10").Cells 
      'if matching then copy from hoja 1 sheet to ActiveSheet 
      If cell2 = cell Then 
       Call hoja1Sheet.Range("K" & cell2.Row).Copy(ActiveSheet.Range("H" & cell.Row)) 
       Debug.Print "copy from: Hoja 1!" & "K" & cell2.Row & " > " & "copy to: ActiveSheet!" & "H" & cell.Row 
      End If 
     Next cell2 
    Next cell 

End Sub 

不能解決任何問題,但可能有用,如果它有助於澄清代碼正在做什麼。

+0

謝謝,你發現代碼中的任何錯誤? –

+0

不,現在你能回答我的問題嗎?錯誤信息是什麼? –

+0

現在它複製,但只是複製0s不知道爲什麼 –

相關問題