excel宏使用变量定义整数失败的范围

excel宏使用变量定义整数失败的范围,excel,vba,Excel,Vba,我正在生成一个由定义的整数myrng1 Set myrng1 = Range("B3 :" & Cells(LastRow, 2))` 在代码中 LastRow = Cells(Rows.Count, "B").End(xlUp).Row Set myrng1 = Range("B3 :" & Cells(LastRow, 2)) Set myrng2 = Range("D3 :" & Cells(LastRow, 4)) ActiveCell.FormulaR1C1

我正在生成一个由定义的整数
myrng1

Set myrng1 = Range("B3 :" & Cells(LastRow, 2))`
在代码中

LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Set myrng1 = Range("B3 :" & Cells(LastRow, 2))
Set myrng2 = Range("D3 :" & Cells(LastRow, 4))

ActiveCell.FormulaR1C1 = "=SUMIF(myrng1,RC[-1],myrng2)"
Range("B15").Select
Selection.AutoFill Destination:=Range("B15:B30"), Type:=xlFillDefault
Range("B15:B30").Select

然而,无论我做什么,我都会遇到对象的
Method'Range'\u Global'失败
错误

如果
单元格(LastRow,2)
的内容不是有效的单元格引用(如B3),则该方法将失败

如果要使用
.Cells(LastRow,2)
的地址,请将其替换为
.Cells(LastRow,2).address(rowabsolute:=False,columnabsolute:=False)


编辑:您也可以使用不带参数的
.Address
,但您会得到$A$1(绝对引用)。

最简单的方法是

Set myrng1 = Range("B3:B" & LastRow)
否则,如Bernard所述,如果您想遵循您的方法,请使用
.Address
属性

将代码更改为

Set myrng1 = Range("B3:" & _
                   Cells(LastRow, 2).Address( _
                                             rowabsolute:=False, _
                                             columnabsolute:=False) _
                   )
或者这个做同样的事情

Set myrng1 = Range("B3:" & _
                   Replace(Cells(LastRow, 2).Address, "$", "") _
                   )
另外,我希望您已将
LastRow
声明为
Long
,而不是
Integer
,因为您可能在xl2007中遇到溢出错误+

最后一件事。您的
单元格
对象未完全限定,这可能会导致错误。完全符合条件。例如(注意点)

编辑感谢pnuts指出这一点

一旦你解决了上述问题,你将面临更多的问题。例如
“=SUMIF(myrng1,RC[-1],myrng2)”
之间的任何内容都将被视为字符串。您可能希望改用此字符串

"=SUMIF(" & myrng1.Address & ",RC[-1]," & myrng2.Address & ")"
同样,您可能希望使用
.Address
,而不使用上面提到的“$”

还有一件事。如果第30行是
lastrow
,那么您可以一次性在所有单元格中填充公式,而不是使用
AutoFill
参见本例

With ThisWorkbook.Sheets("Sheet1")
    .Range("B15:B30").Formula = "=SUMIF(" & _
                                        myrng1.Address & _
                                        ",A15," & _
                                        myrng2.Address & ")"
End With


此外,我想提请您注意:p

您好,非常感谢您给我的帮助,但是每当我尝试运行编辑的脚本时,它都会给我一个运行时错误1004,应用程序定义或对象定义错误。有什么帮助吗?您能用您正在使用的最新代码更新您的问题吗?也让我们来看看知道哪一行给了你错误
"=SUMIF(" & myrng1.Address & ",RC[-1]," & myrng2.Address & ")"
With ThisWorkbook.Sheets("Sheet1")
    .Range("B15:B30").Formula = "=SUMIF(" & _
                                        myrng1.Address & _
                                        ",A15," & _
                                        myrng2.Address & ")"
End With
With ThisWorkbook.Sheets("Sheet1")
    .Range("B15:B" & lastrow).Formula = "=SUMIF(" & _
                                        myrng1.Address & _
                                        ",A15," & _
                                        myrng2.Address & ")"
End With