对象variables未设置

我继续得到这个代码的“对象variables没有设置”错误。 我想要偏移的起始单元格地址取平均相应的列。 但是,vba会尝试偏移startcell的值,而不是单元格地址。 如果有人能给我一些指导,那将是很棒的。 谢谢!

Sub Macro1() Dim i As Integer Dim rowcount As Integer Dim startcell As Range startcell = ActiveSheet.Cells(2, 3).Address(False, False) rowcount = Range("C2", Range("C2").End(xlDown)).Count For i = 1 To rowcount If Not Cells(i, 3).Value = Cells(i + 1, 3).Value Then startcell.Offset(0, 11).Value = Application.WorksheetFunction.Average( _ Range(startcell.Offset(0, 8), Cells(i, 11))) startcell = ActiveSheet.Cells(i + 1, 3).Address(False, False) End If Next i End Sub 

要将一个给定的范围保存在variables中,可以使用它的address ,它是一个string或一个Range 对象 。 后者通常是首选,而且看起来像这是你的意图。

 Dim startcell As Range .... Set startcell = ActiveSheet.Cells(2, 3) ' <-- Set a range object variable .... Set startcell = ActiveSheet.Cells(i + 1, 3) ' <-- Set 

另一方面,如果你想使用的地址(less推荐,除非有特定的原因):

 Dim startAddr As String ' <-- .... startAddr = ActiveSheet.Cells(2, 3).Address(False, False) ' <-- ok, save address .... Range(startAddr).Offset(0, 11).Value = ... ' Range(startAddr) reconstructs a range from the address startAddr = ActiveSheet.Cells(i + 1, 3).Address(False, False)