В VBA (MS Excel 2016): как объединить отсутствующие и логические значения в операторе select case? Аргумент val может быть передан как логическое значение или не передан вообще, или передан как что-то еще неожиданное.
public sub test(optional val as variant)
select case val
case true, isMissing(val): msgbox("foo")
case else: msgBox("bar")
end select
end sub
Выше приведена ошибка времени выполнения '13': Несоответствие типов в случае "case true, isMissing (val): "line.
Предпочтительно использовать один и тот же оператор case, позволяющий использовать несколько значений для отображения msgbox (" foo "). Также предпочел бы не устанавливать значение по умолчанию для необязательного аргумента в определении функции.
Каждый из этих вызовов должен работать:
call test // expect msgBox("foo")
call test("abc") // expect msgBox("bar")
call test(true) // expect msgBox("foo")