是什么导致Excel运行时错误'6'溢出?

时间:2016-07-21 20:11:22

标签: excel excel-vba vba

有人可以帮助我纠正我的代码,以消除我在下面的代码中只有一个符合选择标准的单元格时出现的溢出错误吗?单元格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

1 个答案:

答案 0 :(得分:0)

更改:lRow = Range("A4:B4").End(xlDown).Row

收件人:lRow = Range("A" & Rows.Count).End(xlup).Row

原因是,如果A5:B5和on都是空的,lRow将成为电子表格中使用xlDown函数的最底层,并且变量无法保留内存行号(代码也不必要地循环)。

因此,如果代码从底部开始并查找(使用xlUp),它还会找到要检查的最后一行数据。