首页 > 解决方案 > 直到 i = 特定工作表中的编号单元格数

问题描述

我试图多次执行宏。我想根据特定工作表上特定列中包含数字的单元格数量来执行它。

我试图编写一个 do until 循环,但我收到“do until i =" 行的语法错误。

Sub copy_paste_to_first_blank_row()

Dim i As Integer

i = 1

Do Until i = COUNT(input!E:E)

    Range("A1:D76").Select
    Selection.Copy
    Cells(Range("A1000000").End(xlUp).Row + 1, 1).Select
    ActiveSheet.Paste

i = i + 1

Loop

End Sub

由于在我给定的情况下 count(input!E:E) = 93,我希望循环运行 92 次然后停止。尝试运行时收到错误消息“编译错误:语法错误”;它突出显示“直到”行。

...

现在我试过了

Dim i As Integer, x As Integer

Worksheets("input").Activate
x = Range("E:E").Count

i = 1

Do Until i = x

    Range("A1:D76").Select
    Selection.Copy
    Cells(Range("A1000000").End(xlUp).Row + 1, 1).Select
    ActiveSheet.Paste

i = i + 1

Loop

我收到错误“运行时错误'6':溢出”。

标签: excelvba

解决方案


Integer是 16 位有符号整数类型,所以它可以取的最大值是 32,767。任何大于此值的都会引发溢出运行时错误。

通过将行号声明为Long32 位有符号整数类型来修复它,其最大值远远超出 Excel 工作表上的行数。


推荐阅读