макрос запускается только вручную - PullRequest
0 голосов
/ 27 февраля 2019

Мои знания по VBA довольно просты, так что это может показаться глупым вопросом.

Я написал код, чтобы ячейка A1 в sheet1 читала «XX», если ячейка B1 в sheet2 имеет значение вЭто.Код работает, но только если я выбрал его и запустил вручную из VBA.если в ячейке B1 в sheet2 есть значение, ячейка A1 в sheet1 не обновляется автоматически.Вот код

Sub IsNumeric()
If Sheets ("Sheet2").Range("B2) > 0 Then
Sheets("Sheet1").Range("A1").Value = "XX"
End If
End Sub

Ячейка B2 на листе 2 - это формула, которая будет генерировать число, только если выбрана другая ячейка.Я не уверен, что это актуально, но, как я уже говорил, код работает просто отлично, но не автоматически.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы должны изменить свой код одним касанием.Иметь правильный UDF, определенный и вызванный из Sheet1 A1, со ссылкой, переданной Sheet2 A1, например

Функция

Function IsNumeric2(rngCheck As Excel.Range)

If rngCheck.Value > 0 Then
    IsNumeric2 = "XX"
Else
    IsNumeric2 = ""
End If

End Function

Вызов в ячейке A1, =IsNumeric2(Sheet2!A1)

0 голосов
/ 27 февраля 2019

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