我对此感到有点惊讶,事实证明这是一个挑战。在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
开始,但是我离开了,因为需要在sheet2
上插入行,以防万一有任何有价值的提要,所以我将其留在此处进行发布回来。
我一直关注的是尝试使用CurrentRegion.offset(1)
来继续移动使求和函数保持向下的单元格。问题是我无法弄清楚如何基于rngcount
声明范围,这可能是问题所在,因为也许我不应该使用rngcount
,因为它不是object
,但是我的想法是/是我可以将rngcount
变成一个对象,然后使用CurrentRegion.offset(1)
有点儿漫长,希望目标能够明确实现。谢谢
答案 0 :(得分: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
答案 1 :(得分: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