IsFlag () работает не так, как вы думаете - он не оценивает переменную по ее типу, но оценивает строку, которую вы ей передаете.
Если вы предоставляете текстовую переменную с надписью «Notflag», то, поскольку она не «true» или «false», функция возвращает «false».
Если вы предоставляете функцию с флагом True, то сначала она заменяется текстом «True», затем оценивается и фактически является флагом.
Наконец, если вы предоставляете эту функцию с пустым флагом, то сначала она заменяется пустой строкой "", что, конечно, не является флагом. То же самое происходит с пустым номером, датой и т. Д.
Я думаю, что ваше решение великолепно. Вы также можете поэкспериментировать с использованием приведенных ниже кодов, чтобы в вашей студии было меньше ящиков.
Trim([Flag])=""
или
[Flag] = True OR
[Flag] = False OR
Trim([Flag])=""