Zu 1) (warum ich nicht Variant nehme)
Ich will es eingrenzen soweit es geht.
Dim myArray() as String erscheint mir sauberer, weil eingegrenzter, als Dim myArray() as Variant.
Außerdem: Wenn ein "User" meiner Routine das "... as String" liest, ist sofort klar, dass da nix anderes reindarf. Steht da "...as Variant", ist das u.U. unklar (auch wenn die Routine sauber dokumentiert ist).
Zu 2) (was ich mit der Abfrage mache)
Ich prüfe, ob das lower bound des übergebenen Arrays = 0 ist. Wenn nicht, greift ein Errorhandling. Ist ein Scriptentwurf, später kommt diese Abfrage direkt in die Weiterverarbeitung des Arrays.
Ich bin aber für Tipps immer aufgeschlossen :-) So wie ich es deute, kann ich das mit meinem StringArray nicht so einfach händeln, und muss wohl doch leider auf Variant switchen