Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 直到i=特定工作表中编号单元格的数量_Excel_Vba - Fatal编程技术网

Excel 直到i=特定工作表中编号单元格的数量

Excel 直到i=特定工作表中编号单元格的数量,excel,vba,Excel,Vba,我多次尝试执行宏。我希望根据特定工作表中特定列中包含数字的单元格数执行它 我试图编写一个do-until循环,但“do-until I=”行出现语法错误 因为在我给定的情况下count(input!E:E)=93,我希望循环运行92次,然后停止。当我尝试运行它时,我得到错误消息“compileerror:syntax error”;它突出显示“截止日期”行 现在我已经试过了 Dim i As Integer, x As Integer Worksheets("input").Activate

我多次尝试执行宏。我希望根据特定工作表中特定列中包含数字的单元格数执行它

我试图编写一个do-until循环,但“do-until I=”行出现语法错误

因为在我给定的情况下count(input!E:E)=93,我希望循环运行92次,然后停止。当我尝试运行它时,我得到错误消息“compileerror:syntax error”;它突出显示“截止日期”行

现在我已经试过了

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':溢出”。

Integer
是一个16位有符号整数类型,因此它可以接受的最大值是32767。大于该值的任何值都将引发溢出运行时错误


通过将行号声明为
Long
,一种32位有符号整数类型,其最大值远远超过Excel工作表上的行数来修复此问题。

此代码存在许多问题,您的目标是什么?
COUNT
是一个工作表函数。此外,您可能希望找到最后一行,然后将其用于循环?要查找最后一行,请参见我的目标是在给定次数内运行循环。我想运行它的次数等于count(输入!E:E),我刚刚设置I=93,它就工作了。我想那就行了。
Dim I Long
,而不是
Integer
。这让它运行起来,但现在我发现了第二个问题。当VBA计算--x=Worksheets(“input”).range(“E:E”).Count--它返回excel中的总行数,但我在E列中只有93个带数字的单元格,所以x应该等于93。@auditor Sid已经为您提供了一个链接。我现在明白了。通过使x=lastrow-1,这项工作就结束了。如果有一种方法可以返回一个等于给定列计数的值,那将是理想的。我肯定有,但现在这可能是最好的解决方案。@如果你真的阅读了链接的问答,你会发现
范围(“E”&Rows.Count)。End(xlUp)。Row
给了你确切的答案。。。
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