当使用row.count发生新条目时,使用sum函数向下移动单元格

问题描述 投票:0回答:2

我有点惊讶这已被证明是一个如此挑战。在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:=xlDowbut我离开了那个因为需要在sheet2上插入一行我已经将它留在这里用于此帖子,以防有任何有价值的反馈。

我一直在关注的是尝试使用CurrentRegion.offset(1)继续移动保持sum函数的单元格。问题是我无法弄清楚如何声明基于rngcount的范围这可能是问题,因为也许我不应该使用rngcount,因为它不是object,但我的想法是/是我可以把那个rngcount变成一个对象然后使用CurrentRegion.offset(1)有点长的啰嗦,希望目标明确。谢谢

Image 1

Image2

excel vba
2个回答
0
投票

看看这个,看看它是否符合您的要求。

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

0
投票

我通常喜欢将总公式放在工作表中,而不是在宏中进行数学运算。

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
© www.soinside.com 2019 - 2024. All rights reserved.