我有点惊讶这已被证明是一个如此挑战。在sheet 1
上,我的输入看起来如下:
Private Sub CommandButton1_Click()
erw = Sheet2.Cells(1, 1).CurrentRegion.Rows.Count + 1
'erw.Offset(1).EntireRow.Insert Shift:=xlDow
If Len(Range("c3")) <> 0 Then
Sheet2.Cells(erw, 1) = Range("c3")
Sheet2.Cells(erw, 2) = Range("c4")
Sheet2.Cells(erw, 3) = Range("c5")
Range("c3") = ""
Range("c4") = ""
Range("c5") = ""
Else
MsgBox "You must enter an amount"
End If
End Sub
上面没有问题,我遇到问题的是第2页,其中存储了信息:
Sub AddUp()
Dim rngcount As Long
Dim TotalA As Long
Dim rng2 As Range
rngcount = Cells(Rows.Count, "A").End(xlUp).Row
Set rng2 = Range("A28")
TotalA = Application.WorksheetFunction.Sum(ThisWorkbook.Sheets("sheet2").Range("a1:a" & rngcount))
rng2 = TotalA
真正的问题是以下Set rng2 = Range("A28")
,因为这实际上是我一直在使用的作弊。我知道总共不会超过26个条目,然后会启动一个新工作表。我目前有TotalA
金额Set
放在A28
,但我想要做的是让TotalA
单元格向下移动,因为更多的条目被放入。换句话说,我宁愿TotalA
将能够移动的范围更多的条目被放入。
我开始使用以下erw.Offset(1).EntireRow.Insert Shift:=xlDow
but我离开了那个因为需要在sheet2
上插入一行我已经将它留在这里用于此帖子,以防有任何有价值的反馈。
我一直在关注的是尝试使用CurrentRegion.offset(1)
继续移动保持sum函数的单元格。问题是我无法弄清楚如何声明基于rngcount
的范围这可能是问题,因为也许我不应该使用rngcount
,因为它不是object
,但我的想法是/是我可以把那个rngcount
变成一个对象然后使用CurrentRegion.offset(1)
有点长的啰嗦,希望目标明确。谢谢
看看这个,看看它是否符合您的要求。
Sub AddUp()
Dim rngcount As Long
Dim TotalA As Long
Dim rng2 As Range
rngcount = Cells(Rows.Count, "A").End(xlUp).Row
Set rng2 = Cells(rngcount + 1, 1)
TotalA = Application.WorksheetFunction.Sum(ThisWorkbook.Sheets("sheet2").Range("a1:a" & rngcount))
rng2 = TotalA
End Sub
我通常喜欢将总公式放在工作表中,而不是在宏中进行数学运算。
Sub AddUp()
Dim rngcount As Long
Dim TotalA As Long
Dim TotalStartRng As Range
Dim TotalEndRng As Range
rngcount = Cells(Rows.Count, "A").End(xlUp).Row
Set TotalStartRng = Cells(1, 1)
Set TotalEndRng = Cells(rngcount, 1)
Cells(rngcount + 1, 1) = "=SUM(" & TotalStartRng.Address & ":" & TotalEndRng.Address & ")"
End Sub