У меня динамический диапазон ячеек. В зависимости от того, будет ли кто-либо добавлять или удалять данные в одной из ячеек в столбце A, диапазон будет меняться. Мне нужно обнаружить изменение в этом диапазоне. Диапазон равен sht.Range("C3:" & Cells(numberOfRows, numberOfColumns)
. Тогда, например, скажем, что ячейка, которая изменилась, это «F9». Мне нужно добавить формулу к «AH9». Дело в том, что формула всегда будет находиться в столбце «AH», а строка - это то, что изменится. Если вам интересно, формула, которую я добавляю, будет суммировать столбцы от «C» до «AG» в строке с измененной ячейкой. Итак, если «F9» - это ячейка, которая изменилась, мне нужно сложить «C9» в «AG9» =SUM(F9:AG9)
. Я думаю, что мне нужно было бы поместить код в лист, в котором я пытаюсь обнаружить изменение, и это выглядело бы примерно так:
Private Sub currentSheetChange(ByVal Target As Range)
Dim sht As Worksheet
Dim rfRange As Range
Dim numberOfColumns As Integer
Dim numberOfRows As Integer
numberOfColumns = getNumberOfColumns
numberOfRows = getNumberOfRows
Set sht = ThisWorkbook.Sheets("Current")
Set rfRange = sht.Range("C3:" & Cells(numberOfRows, numberOfColumns)
If Not Intersect(Target, sht.Range(rfRange)) Is Nothing Then
Насколько я это сделал до сих пор. Если это работает к этому моменту, я не уверен, как узнать, какая ячейка изменилась. Я также предполагаю, что я бы использовал sht.Range("AH" & rowNumber).Formula =
для ввода формулы в ячейку.