2015-10-21 139 views
1

我做的,我想Ÿ等於10每次經過循環,以+1即10,11,12,13For循環代碼(編譯錯誤)

但是我的時間一個簡單的循環代碼如果有人可以讓我知道爲什麼會發生這種情況,將會非常感激。

Dim targetrow As Long 
targetrow = ActiveSheet.Range("Total").Offset(-2, 0).Row 

Y = 10 
For X = 19 To targetrow Step 1 
If Range("K" & X) <> "" Then 

Range("K" & X).Copy 
Workbooks(PtchFile).Activate 
Range("G" & Y).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
:=False, Transpose:=False 

Y = Y + 1 
X = X + 1 
Else 
End If 
Next X 
+2

你有什麼錯誤?你不需要聲明這些變量嗎?我的意思是Dim Y As Integer和Dim X As Integer? –

+2

如果您正在使用'Option Explicit',那麼您確實需要聲明它們。但@Racil Hilan問了更重要的問題。你遇到了什麼錯誤? – MatthewD

回答

1

聲明的變量,你上面的代碼片段如下:

Dim X as Integer 
Dim Y as Integer 

您可能還需要你激活,你複製的範圍內日前複製範圍工作簿,下一輪迭代將會複製工作簿中的範圍(「K」& X + 1)PtchFile

歡呼聲。

+0

當然!謝謝! –

+0

其值得注意的是你可能需要聲明你的變量爲'Long'類型。你將'target'聲明爲'Long',這很好,特別是如果該行大於32,000(參見:http://stackoverflow.com/questions/10558540/vba-macro-crashes-after-32000-rows) 。如果X或Y對於「Integer」類型的數字太高,則會出現「Overflow」錯誤。 –

+0

我雖然不值得一提,但對於任何感興趣的人:http://stackoverflow.com/questions/26409117/why-use-integer-instead-of-long,如果聲明爲整數變量沒有價值,但習慣很難打破=) – ga56mor