我有一个宏,它需要一个电子表格,其中有一行数据,然后是一个空白行。该宏复制一些数据从第一行到第二行。为了实现这一点,它看一个字段,其中包括数据时,一行将需要复制(切真的),如果检查单元格不是空的,它削减数据进一步进入行,并粘贴到下面的行。
当我运行宏时,它正确地剪切和粘贴了几行数据,然后它切换到剪切空白单元格和覆盖数据。
这是一个更大的宏的一部分,其中包括插入空行。当这个错误出现时,我把它分成两个步骤,这就是为什么定义了额外的变量。插入空行工作正常。然后我把数据保存为csv以清除第一个宏中的任何格式,并运行第二个宏。我使用的代码如下:
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+Q
'
Dim iCounter As Long
Dim LastRowColumnB As Long, NewLastRow As Long
LastRowColumnB = Cells(Rows.Count, 2).End(xlUp).Row
NewLastRow = LastRowColumnB + LastRowColumnB
Dim MyRange As Range, NewRange As Range
Set MyRange = Range("B2:B" & LastRowColumnB)
Set NewRange = Range("B2:B" & NewLastRow)
With ActiveSheet
For Each Row In NewRange
If IsEmpty(Row.Cells(10)) Then
Range(Cells(Row.Row, 16), Cells(Row.Row, 25)).Cut Destination:=Range(Cells(Row.Row + 1, 6), Cells(Row.Row + 1, 15))
End If
MsgBox ("Pause")
Next Row
End With
End Sub
我试过以If和If Not IsEmpty两种方式运行。当以If Not运行时,没有单元格被正确剪切和粘贴,但当以If运行时,好的数据会从更改的位置开始被覆盖。我也试过不同长度的数据集。正确处理的行数之间没有明显的联系(例如,它与插入宏运行之前的初始行数有关)。
显然,添加消息框只是为了使程序一次运行一行,以用于诊断目的。
1条答案
按热度按时间unftdfkk1#
下面是你的代码和我的更正:
以下是我建议的方法: