2015-11-16 193 views
2

我遇到了SUM問題。這個想法是我想用我自己的變數來達到某個範圍。SUM直到最後一行使用VBA在Excel中添加公式

這是我的代碼

Range("B299").Activate 
ActiveCell.FormulaR1C1 = "=SUM(R[-298]C:R[-1]C)" 

我想用LASTROW變量來改變SUM

這裏是我的LASTROW聲明,我創建對其他子這個變量和我之前把它的值我想用SUM

lastrow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

,當我試圖運行宏,它表明:

運行時錯誤 '1004':....

編輯: 我遇到的另一個問題。這是關於找到拉斯特羅函數。

比方說,當我第一次嘗試運行宏時,它將lastrow記錄爲300.但是當我第二次嘗試運行它時,例如我有200行數據,findlastrow函數仍將其記錄爲300而不是200.

這是我的findlastrow功能

Sub FindLastRow() 

lastrow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row 

MsgBox "Last Row this sheet is " & lastrow 

的LASTROW變量,我宣佈它作爲全局變量模塊1

Public lastrow As Integer 

我不知道什麼是錯的代碼

回答

3

在這篇文章請看:Error in finding last used cell in VBA

所以,你應該使用這樣的:

With ActiveSheet 
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then 
     lastrow = .Cells.Find(What:="*", _ 
         After:=.Range("A1"), _ 
         Lookat:=xlPart, _ 
         LookIn:=xlFormulas, _ 
         SearchOrder:=xlByRows, _ 
         SearchDirection:=xlPrevious, _ 
         MatchCase:=False).Row 
    Else 
     lastrow = 1 
    End If 
End With 
Range("B" & lastrow +1).FormulaR1C1 = "=SUM(R[-" & lastrow & "]C:R[-1]C)" 
+1

或者只是:'「= SUM(R,C:R - 1] C)「' – Rory

+0

@Rory:的確,我只是堅持OP的格式,但你的解決方案對於那個特定的問題肯定更好。 ;) – R3uK

+0

嗨R3uK,我想說謝謝你的回答。但是現在我遇到了一個關於findlastrow函數的新問題。你能幫我嗎?細節在我的第一篇文章,編輯部分。無論如何,謝謝:) –