#excel #vba
Вопрос:
Я пытаюсь запустить сценарий, который будет выполняться, если будут выполнены оба нижеприведенных условия, однако макрос не запускается. Что я упускаю?
Dim Answer As VbMsgBoxResult
If Sheet9.Range("H6").Value = "True" And Sheet9.Range("L5").Value = "Err" Then
Answer = MsgBox("Error: The Macro needs to be run before closing workbook ")
End If
End Sub
Комментарии:
1. Если вы не получите a
MsgBox
, то либо одно, либо оба условия будут ложными. ИспользованиеDebug.Print
:Debug.Print Sheet9.Range("H6").Value = "True"
,Debug.Print Sheet9.Range("L5").Value = "Err"
.2. О каком макросе вы говорите? Вы представляете, что отправив сообщение, конкретный макрос услышит и выполнит его сам по себе? Если вам нужно проверить сообщение, чтобы, скажем, принять решение, то способ, которым вы пытаетесь, является неполным. Вы использовали только этот
prompt
параметр. За этим должно последовать, скажемvbYesNo
, создание окна сообщения для отображения на кнопках. Вы должны проверить, какая кнопка была нажата:If Answer = vbYes Then runMyMacro
. Когда вы говорите «Вызовите макрос, если будут выполнены условия», вы хотите только, чтобы появилось сообщение? Вы уверены, что начальные условия верны?3. «макрос не запускается» — как вы его запускаете?
4. Я считаю, что проблема в том, что Sheet9.Range(«L5»).Value = «Err» является ложным, но должно быть правдой. Ошибка возвращается через функцию — может ли это быть проблемой? Я просматриваю код с помощью F8, но в конечном итоге код будет запущен до сохранения книги
5. Является ли значение ячейки буквально «Ошибкой» или фактическим значением ошибки? Может быть, вам нужно что-то вроде
IsError(Sheet9.Range("L5").Value)