Falls das Letzte missverständlich war, ...
02.12.2019 18:13:25
Luc:-?
…hier noch eine Ergänzung:
Es ist egal, ob die #-Konstanten in einem Pgm oder fürs Modul genannt wdn, sie wdn ohnehin stets nur auf ModulEbene und auch nur für die Kompilierung ausgewertet, weshalb sie anderweitig auch nutzlos sind. Das bedeutet auch, dass sie nur manuell festgelegt wdn können. „Parametrierbare Pgm-Wege“ heißt also nichts Anderes, als diese vorab nach Bedarf manuell festzulegen. Damit kann man quasi aus einem gemeinsamen Pgm mehrere Varianten kreieren, je nachdem wie sie eingesetzt wdn sollen. Dabei kann das auch innerhalb von PgmVerzweigungen erfolgen, die per Parameter bzw Argument direkt steuerbar sind. Je nach Wert der #-Konstante wdn dann nämlich alle auf die jeweilige #-Konstante bezogenen irrelevanten PgmTeile, die innerhalb von zugehörigen #-Blöcken stehen, gar nicht erst kompiliert und deshalb auch nicht in die SyntaxPrüfung einbezogen. Dazu habe ich mal ein etwas komplexeres Bsp geschaffen, das auch noch eine andere Möglichkeit enthält, in einer älteren Version unbekannte Fktsnamen der SyntaxÜberprüfung zu entziehen:
#Const alfa = 0
#Const beta = 0
Rem DemoUDF f.BedKomp u.Maskieren vb-unbekannter Funktionen
' Vs1.1 -LSr -cd:20191130 -1pub:20191202h -lupd:20191201t
Function bKomPm(Bezug, Optional ByVal ArbVar As Boolean)
' #Const alfa = 0
' #Const beta = 0
Dim erg, x
If ArbVar Then
#If alfa = 1 Then
bKomPm = Array(WorksheetFunction.Aggregate(9, 6, Bezug), "Var1.1")
#Else
For Each x In Bezug
If IsNumeric(x) Then erg = erg + x
Next x
bKomPm = Array(erg, "Var1.0")
#End If
Else
#If beta = 1 Then
If TypeName(Bezug) = "Range" Then Bezug = Bezug.Address
bKomPm = Array(Evaluate("VJoin(" & Bezug & ",,-1)"), "Var0.1")
#Else
For Each x In Bezug
If IsError(x) Then Else erg = erg & x
Next x
bKomPm = Array(erg, "Var0.0")
#End If
End If
End Function
Für unbekannte neue ObjektEigenschaften wäre es evtl auch möglich, CallByName zu verwenden, bei dem diese Eigenschaft als Bezeichnungstext (2.Argument) zum Objekt (1.Arg) angegeben wird. Das zeigt die obige Bsp-UDF aber nicht. (Ein 2. möglicher #Const-Standort wurde angedeutet, ist aber irrelevant.)
Luc :-?