Excel – macros,复制到新的工作簿不工作的8行的倍数
我试图使用macros代码将.xlsm格式的工作簿中的特定数量的行复制到.csv文件中。 代码工作正常,如果我必须复制7行。 这是7行被复制到.csv文件的屏幕截图。 截图1
当我尝试复制8的倍数的行时,问题就出现了。8行被无限拷贝到工作表的最后,如下所示: 截图2
这是我正在使用的代码。 (7或8行代码保持不变)
For I = Col1 To Last_col - 1 ws.Range(Cells(1, I), Cells(LastRow, I)).Copy Destination:=wsNew.Columns(k1) k1 = k1 + 1 Next I
*这里k1被初始化为值为1的Long, LastRow
variables的值为7(或8)。 请注意,Col1是要复制的第一列。
我是新的Excelmacros,任何帮助,将不胜感激。
Excel将尝试使用复制的范围填充整个目标范围。
如果源中的行数不是目标行的因子,则确定不可能均匀地执行此操作,只是将源复制一次。
如果源中的行数是目标行的因子,那么Excel只是重复来源以填充整个目标区域。
在你的情况下,7不是1048576的因素,所以只有一个副本。 8是1048576的因子,所以制成了131072份。 在1行,2行,4行,16行,32行等的源范围中将出现相同的“重复”。
您的代码可以被重写为:
For I = Col1 To Last_col - 1 ws.Range(ws.Cells(1, I), ws.Cells(LastRow, I)).Copy Destination:=wsNew.Range(wsNew.Cells(1, k1), wsNew.Cells(LastRow, k1)) k1 = k1 + 1 Next I
或者你可以避免循环,只使用:
ws.Range(ws.Cells(1, Col1), ws.Cells(LastRow, Last_col - 1)).Copy wsNew.Range("A1")