Sub Foo(Optional Bar As Boolean)
If IsMissing(Bar) Then Bar = True
End Sub
Вторая часть условия (Then) никогда не будет выполнена, потому что обращение к отсутствующему параметру автоматически устанавливает его значение в FALSE, и TRUE уже не присвоить.
Тогда подумайте и скажите, пожалуйста, как может быть, что
Function UDF(Optional bPassedStatus As Boolean)
dim bInnerStatus as boolean
If IsMissing(bPassedStatus) then bInnerStatus = True
REM Use the bInnerStatus in the next parts of the function...
это и есть абсолютно работающий во всех режимах единственный (простой) вариант использования опциональных переменных в StarBasic – одна переменная для переданного параметра (сам параметр процедуры), а другая для использования в теле после анализа входного параметра*. По другому не так просто, со всеми особенностями.
Ведь до присвоения всё равно не дойдёт.
Разве что это карго-культ по причине того, что
Во всяком случае совет дан старожилом форума.