2013-07-04 58 views
2

我已經編寫了這些代碼,這是更大問題的一部分。最初它應該開始將一些數據從工作表傳輸到另一個..但它會一直跳過行,它會複製一個,跳過然後複製另一個,跳過,複製,跳過...我使用Select方法來測試,而不是複製。對於VBA中的每個循環意外跳過行

Dim sharepointSheet As Worksheet 
Dim masterSheet As Worksheet 
Dim sharepointTable As Range 

'Auxliary variable 
Dim row As Range 
Dim cell As Range 
Dim RowLast As Long 



Set sharepointSheet = ThisWorkbook.Worksheets("Sharepoint List") 
Set masterSheet = ThisWorkbook.Worksheets("Master List") 

Set sharepointTable = masterSheet.Range("A2", "F133") 


For Each row In sharepointTable.Rows 
    row.Cells(row.row, 3).Select 

    ' RowLast = masterSheet.Cells(Rows.Count, "A").End(xlUp).row + 1 
    ' masterSheet.Cells(RowLast, "A").PasteSpecial 

Next row 
+0

你的循環中的東西也增加了行計數器。可能是行+1 – Guanxi

+0

我雖然這樣做,但即使當我將註釋標記放在這些行的前面,就像它在示例中一樣,它仍然以相同的方式選擇 – Victor

+0

我唯一能想到的就是範圍來自一個格式化的表...但它不能這樣..我猜 – Victor

回答

3

你,因爲你是選擇相對該行你row範圍,而不是工作範圍內遇到的問題。

如果更改選擇線以下,將解決你的問題:

masterSheet.Cells(row.row, 3).Select 

也沒有,它不是使用變量,如row的範圍,因爲它可以變得非常混亂的一個好主意!

+0

它的工作..雖然很奇怪,它應該在兩個方面都有意義,不是嗎? – Victor

+0

非常感謝您 – Victor

+0

當您從中指定'Cells'時,您可以將'row'範圍視爲工作表上的新參考點。因此,當你從第一行開始時,row.Cells(1,1)將是同一行,row.Cells(2,1)將成爲下一個等等。通過執行row.Cells( row.row,1)'對於第2行而言,實際上在工作表上第3行。 Geez我希望這是有道理的,在那裏有太多的行。如果你也可以接受這個答案,那會是膨脹的:) – CuberChase