【发布时间】:2014-10-10 12:11:40
【问题描述】:
我通过循环方法开发了一个脚本,将数据从一个工作表复制到另一个工作表,然后刷新第一个字段。该脚本运行良好,除了一个问题。在第二张纸中,它应该在 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
【问题讨论】:
-
您的意思是
x = 1而不是x = i? -
对于第一个工作表 x 应该是 i 以从第 11 行开始范围,但第二个工作表应该偏移 x = 0 以超过 A 列中第一个非空白单元格中的数据 @TonyDallimore
-
只是对您的代码的注释。当您使用 x 和 y 等单字母变量时,更难理解。此外,您应该命名您正在使用的范围。但我确实喜欢你使用
Option Explicit。干得好!
标签: vba excel copy-paste offset