Уведомление об ответе может попасть в папку "Спам".
На Яндексе (или в другой почтовой системе) пометьте полученное письмо "Не спам", чтобы уведомления не попадали в папку "Спам".
Или, если вы используете почтовую программу (а не браузер), то разрешите спаму попадать в папку "Входящие" (в этом случае в теме письма будет текст [OBORONA-SPAM]).

VBA Макросы: Странное (нелогичное) поведение параметра функции, метода

Автор ddiller, 26 апреля 2018, 10:59

ddiller

Почему в этом коде у параметра NoReset странное поведение:
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset = False

По логике и по описанию параметр "NoReset = False" наоборот должен все сбрасывать, но он сбрасывает при значении True. Прав ли я?

Администратор

После NoReset должно быть двоеточие:
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:= False

Если вы не ставите после параметра двоеточие, то слово "NoReset" макрос воспринимает, как переменную, а не как параметр функции. То есть, используя "NoReset" без использования двоеточия, вы создаёте, сами того не зная, переменную. То есть делаете действие, аналогичное этому:
Dim NoReset

Затем переменная сравнивается со словом False.
Переменная NoReset имеет тип данных Variant и видимо становится булевой. Т.к. в ней пусто, то в переменной NoReset становится False.

Затем False сравнивается с False:
False = False

Это возвращает True.

Во второй параметр метода Protect, подставляется True, что соответствует:
NoReset:=True

Чтобы было меньше проблем, сделайте режим, при котором нужно обязательно создавать переменные. В этом случае, если макрос увидит несозданную переменную с помощью Dim, будет ошибка и макрос не запустится.
Как сделать этот режим, написано здесь: https://forumvba.ru/index.php?topic=402.0