最簡單的方法來做到這一點是
Set myrng1 = Range("B3:B" & LastRow)
不然,如果你想跟着你的方法,然後伯納德所提到的,使用.Address
屬性。
更改您的代碼
或這裏面做同樣的事情。
Set myrng1 = Range("B3:" & _
Replace(Cells(LastRow, 2).Address, "$", "") _
)
而且我希望你已經宣佈LastRow
爲Long
,而不是作爲Integer
,你可以在XL2007 +
最後一件事得到溢出錯誤。您的Cells
對象不完全合格,可能會導致錯誤。完全符合條件。例如(注意DOTS)
Set myrng1 = ThisWorkbook.Sheets("Sheet1").Range("B3:B" & LastRow)
或
With ThisWorkbook.Sheets("Sheet1")
Set myrng1 = .Range("B3:" & _
.Cells(LastRow, 2).Address(_
rowabsolute:=False, _
columnabsolute:=False) _
)
End With
編輯感謝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
或者
With ThisWorkbook.Sheets("Sheet1")
.Range("B15:B" & lastrow).Formula = "=SUMIF(" & _
myrng1.Address & _
",A15," & _
myrng2.Address & ")"
End With
此外,我想提請你注意到這個INTERESTING READ:p
嗨,非常感謝您給我的幫助,但是無論何時我嘗試運行編輯部分,它給我一個運行時錯誤1004,應用程序定義或obj等定義的錯誤。任何幫助? –
你能用最新的代碼更新你的問題嗎?也讓我們知道哪條線給你錯誤 –