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