【问题标题】:What is causing Excel Run time error '6' overflow?是什么导致 Excel 运行时错误“6”溢出?
【发布时间】:2016-11-25 14:13:32
【问题描述】:

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

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

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

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

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

    【讨论】:

    • Scott,它不仅完美运行,而且明显加快了 VBA 进程!我还想提一下,这是您第二次为我提供出色的解决方案,我非常感谢您。
    • @user1483720 - 就像 4 年前一样!惊人的!此外,SO 的最佳做法是接受对您有用或您认为有用的答案,以便其他人可以从中受益。
    • 对不起 - 我错过了。如果您不是普通用户,这不是很直观。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多