2015-11-16 135 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函数的新问题。你能帮我吗?细节在我的第一篇文章,编辑部分。无论如何,谢谢:) –