Мои знания VBA довольно базовые, поэтому этот вопрос может показаться глупым.
Я написал код, так что ячейка A1 на листе 1 будет читать «XX», если в ячейке B1 на листе 2 есть значение. Код работает, но только если я выберу его и запущу вручную из VBA. если в ячейке B1 на листе 2 есть значение, ячейка A1 на листе 1 не обновляется автоматически. Вот код
Sub IsNumeric()
If Sheets ("Sheet2").Range("B2) > 0 Then
Sheets("Sheet1").Range("A1").Value = "XX"
End If
End Sub
Ячейка B2 на листе2 — это формула, которая будет генерировать число только в том случае, если выбрана другая ячейка. я не уверен, что это актуально, но, как я уже говорил, код работает нормально, просто не автоматически.
Спасибо!
Кроме того, IsNumeric существует как функция в VBA, поэтому лучше использовать другое имя.


Если вы хотите, чтобы макрос работал автоматически на основе события в рабочей книге, вы можете добавить макрос события рабочей книги в ThisWorkbook. В этом случае вы можете использовать, например, событие Workbook_SheetChange, которое запускается каждый раз, когда вы вносите изменения в лист: https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.sheetchange
Private Sub Workbook_SheetChange(ByVal Sh As Object,ByVal Source As Range)
Application.EnableEvents = False 'Switch off events because otherwise it gets triggered again for the changes made in this macro
'First make sure that it only triggers when you change B2 of sheet 2
If Source.Address = "$B$2" and Source.Parent.Name = "Sheet2" then
If Source.Value > 0 Then
ThisWorkbook.sheets("Sheet1").Range("A1").Value = "XX"
End If
end if
Application.EnableEvents = True 'Turn the events back on again.
End Sub
Вам нужно немного изменить свой код. Определите правильную пользовательскую функцию и вызовите ее из Sheet1 A1 со ссылкой, переданной, например, в Sheet2 A1.
Функция
Function IsNumeric2(rngCheck As Excel.Range)
If rngCheck.Value > 0 Then
IsNumeric2 = "XX"
Else
IsNumeric2 = ""
End If
End Function
Звонок, в ячейке А1, =IsNumeric2(Sheet2!A1)
Почему бы просто не использовать формулу
IFна Листе 1 A1? Вы также можете посмотреть на использование событий изменения Sheet2