有人可以帮助我纠正我的代码,以消除我在下面的代码中只有一个符合选择标准的单元格时出现的溢出错误吗?单元格A4和向下包含产品和单元格B4的描述,向下包含数量。目的是将描述从A4复制到L列多次,与B4中的数量相对应,并重复此过程的次数与A列中的产品描述一样多次。当有多个描述时,这种方法非常有效。被复制,但如果A5向下为空则导致溢出错误。在下面的代码中调用的三个宏 - 我相信 - 都是无害的,只需要在实际代码开始运行之前取消保护此工作表,然后格式化一个范围并在完成后重新保护工作表。 我的Excel公式相当不错,但我的编码很弱,所以我希望答案是我代码中的一个简单缺陷。提前谢谢了。
Private Sub Create_NumberList()
Application.ScreenUpdating = False
Sheets("Selections").Select
Call UnprotectSelections
Dim lRow As Long
Dim x, MyCount As Integer
lRow = Range("A4:B4").End(xlDown).Row
For Each cell In Range("A4:A" & lRow)
cell.Copy
MyCount = cell.Offset(0, 8)
Do
x = x + 1
Range("L" & x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
MyCount = MyCount - 1
Loop Until MyCount = 0
Next cell
Application.CutCopyMode = False
Call ProtectSelections
Call ReformatSelections
End Sub
答案 0 :(得分:0)
更改:lRow = Range("A4:B4").End(xlDown).Row
收件人:lRow = Range("A" & Rows.Count).End(xlup).Row
原因是,如果A5:B5
和on都是空的,lRow
将成为电子表格中使用xlDown
函数的最底层,并且变量无法保留内存行号(代码也不必要地循环)。
因此,如果代码从底部开始并查找(使用xlUp
),它还会找到要检查的最后一行数据。