Vba 恒定运行时错误“1004”

Vba 恒定运行时错误“1004”,vba,excel-2010,Vba,Excel 2010,我试着把三列中的数据一列一列地加起来,然后把总数粘贴到下一页的三个单元格中。我已经想出了以下代码。它可以正常工作几次,但随后开始抛出错误:运行时错误“1004”应用程序定义的错误或对象定义的错误 Sub test1() Dim Counter As Integer Counter = 1 For i = 1 To 3 Do Until ThisWorkbook.Sheets("Sheet1").Cells(Counter, i).Value = "" ThisWorkbook.S

我试着把三列中的数据一列一列地加起来,然后把总数粘贴到下一页的三个单元格中。我已经想出了以下代码。它可以正常工作几次,但随后开始抛出错误:运行时错误“1004”应用程序定义的错误或对象定义的错误

Sub test1()

Dim Counter As Integer
Counter = 1

For i = 1 To 3

Do Until ThisWorkbook.Sheets("Sheet1").Cells(Counter, i).Value = ""

    ThisWorkbook.Sheets("Sheet1").Range(Cells(1, i), Cells(Counter, i)).Select
    Counter = Counter + 1

Loop

    Value1 = Application.WorksheetFunction.Sum(Selection)
    ThisWorkbook.Sheets("Sheet2").Cells(1, i).Value = Value1

Next i

End Sub

不能在图纸中选择未激活的范围,这是导致错误的原因

如果除Sheet1外还有任何工作表处于活动状态,则代码将抛出列出的错误。 作为快速修复方法,请在循环之前添加Thisworkbook.SheetsSheet1.Activate


作为更好的解决方案,您应该尝试从代码中删除select。

您不能在工作表中选择未激活的范围,这就是导致错误的原因

如果除Sheet1外还有任何工作表处于活动状态,则代码将抛出列出的错误。 作为快速修复方法,请在循环之前添加Thisworkbook.SheetsSheet1.Activate


作为更好的修复方法,您应该尝试从代码中删除select。

您是否尝试过使用断点或错误转到进行调试,以查看错误发生在哪一行?这对我来说很好-尽管我很难看到您试图实现的目标。作为提示,您应该在代码模块的开头包含Option Explicit,并声明您正在使用的变量-例如,在本例中,您声明了counter,但忘记了Value1和i。但是,不确定1004应该来自何处。您是否尝试过使用断点或错误转到进行调试,以查看错误发生在哪一行?对我来说效果很好-尽管我很难看到您试图实现的目标。作为提示,您应该在代码模块的开头包含Option Explicit,并声明您正在使用的变量-例如,在本例中,您声明了counter,但忘记了Value1和i。不过,我不知道1004应该从哪里来。谢谢丹尼尔!!这有帮助。不过我还有一个问题。在同一代码中,它仅在第2列之前求和。即使i=1到3,For循环似乎也不会超出第2列。提前谢谢,确实是这样,但我能猜出问题是什么。。。由于您从未为下一个i重置计数器的值,因此它将继续使用最后一个值。要解决这个问题,请将计数器=1移动到For循环的开头。谢谢Daniel!!这有帮助。不过我还有一个问题。在同一代码中,它仅在第2列之前求和。即使i=1到3,For循环似乎也不会超出第2列。提前谢谢,确实是这样,但我能猜出问题是什么。。。由于您从未为下一个i重置计数器的值,因此它将继续使用最后一个值。要解决此问题,请将计数器=1移动到For循环的开头。