Вызовите макрос, если выполнены условия

#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)