2014-10-10 93 views
1

我通過循環方法開發了一個腳本,將數據從一張紙複製到另一張,然後刷新第一個字段。除了一個問題,腳本運行良好。在第二張表格中,它應該找到列A中的最後一個非空白單元格(即'x')並且通過下一行的數據。問題在於它正在'x + 11'行中粘貼數據。將數據從一張紙複製到另一張時的問題

我需要幫助確定這是爲什麼發生。

請注意,這裏i = 11是因爲第10行中的數據是標題,所需數據從第11行開始。

這是我所作出的宏:

Option Explicit 

Sub CopyPaste() 
    Dim i As Integer 
    Dim x As Long 
    Dim y As Long 
    Dim c As Range 

    i = 11 

    Do While Cells(i, 1).Value <> "" 
    'ActiveSheet.CopyPast 

    x = i 
    y = 0 
    For Each c In Worksheets("CDS").Range(Cells(x, 1), Cells(x, 11)) 
     Worksheets("DataBank").Range("a10000").End(xlUp).Offset(x, y) = c 

     y = y + 1 
     x = 0 
    Next c 
    Application.CutCopyMode = False 

    i = i + 1 
    Loop 
    With Sheets("CDS") 
     Range("A11:K65").ClearContents 
    End With 
End Sub 
+0

您的意思是'X = 1'而不是'X = i'?第一張x的 – 2014-10-10 12:22:17

+0

x應該是我開始從第11行開始的範圍,但第二張應該用x = 0補償以超過列A中的第一個非空白單元中的數據@TonyDallimore – Vizzi 2014-10-10 12:42:19

+0

只需在您的代碼中註釋。使用單字母變量(如x和y)時,要更難遵循。你也應該命名你正在使用的範圍。但我喜歡你使用'Option Explicit'。幹得好! – BradyK 2014-10-10 12:47:39

回答

0

這是因爲你使用的是偏移11開始和一個用於循環的每個迭代增加。

變化: Worksheets("DataBank").Range("a10000").End(xlUp).Offset(x, y) = c

要: Worksheets("DataBank").Cells(Rows.Count,y+1).End(xlUp).Offset(1, 0) = c

+0

我不確定我是否按照你的意思。你能用一個例子更新你的問題嗎? – 2014-10-10 13:18:31

+0

thnx您可以快速回復A列中第一個空白單元格的過去數據,但是數據的順序會受到干擾,比如數據範圍是A11到K11,第二個表格中第一個空白行是10。現在它正在這樣做。目標表單A10中的A11,目標表單上的A11中的B11,目標表單上的B11中的C11,以及目標表單上的C11中的C11 – Vizzi 2014-10-10 13:21:15

+0

希望我現在清楚我的觀點@ jbarker2169 – Vizzi 2014-10-10 13:25:40

相關問題