Перемещение ячейки с функцией суммы вниз при появлении новых записей с использованием row.count - PullRequest
0 голосов
/ 02 марта 2019

Я немного удивлен, что это оказалось такой проблемой.На 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 Iя оставил это здесь для этой публикации на случай, если есть какая-либо ценная обратная связь.

Вместо этого я сосредоточился на попытке использовать CurrentRegion.offset(1), чтобы продолжать перемещать ячейку, которая удерживает функцию суммы.Проблема в том, что я не могу понять, как объявить диапазон, основанный на rngcount Это может быть проблемой, потому что, возможно, мне не следует использовать rngcount, поскольку это не object, но я думаю, что я мог повернутьчто rngcount в объект, а затем использовать CurrentRegion.offset(1) Немного затянуто, надеюсь, что цель достигнута ясно.Спасибо

Image 1

Image2

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Обычно я предпочитаю помещать итоговые формулы в таблицу вместо математических операций в макросе.

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
0 голосов
/ 02 марта 2019

Посмотрите на это и посмотрите, делает ли он то, что вы хотите.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...