У меня есть лист в Excel с ячейками, который использует этот макрос VBA (используя два параметра, он подсчитывает количество вхождений аргумента № 1 в диапазоне аргумента № 2 по всем листам и возвращает общее количество):
Public Function WBCountString(SearchFor As String, InRange As Range) As Long
Dim wbcs As Long, rng As Range, addr As String
For Each s In Worksheets
addr = InRange.Address
Set rng = s.Range(addr)
wbcs = wbcs + Application.WorksheetFunction.CountIf(rng, SearchFor)
Next s
WBCountString = wbcs
End Function
Макрос используется в качестве функции в ячейке, как показано ниже, в которой в качестве параметров используются ячейки, расположенные в A: A:
Когда я изменяю значение ячейки A: A, значение ячейки, в которой используется сценарий, не изменяется, и мне приходится нажимать на формулу и нажимать «Enter», чтобы значение было обновлено.
Я пытался использовать эту функцию в «ThisWorkbook», я получаю сообщение «Изменить», но ячейки в F: F не обновляют или не изменяют значение:
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Source As Range)
' runs when a sheet is changed
MsgBox "Change."
Application.Calculate
End Sub
Как я могу сделать так, чтобы ячейки, использующие этот макрос, обновлялись каждый раз при обновлении любой ячейки A: A на любом листе рабочей книги?