Ein Getitemvalue liefert dir IMMER ein Array zurück. In vielen Fällen ist das Array nur mit einem Element gefüllt.
arr(i)=doc.Getitemvalue()(0)
füllt dein Arrayelement arr(i) aus dem ersten (und in deinem Fall auch einzigen) Arrayelement des items - und das ist die einzig zulässige Art, Arrays zu befüllen.
Umlaute werden dann zum Problem, wenn dein Code in asiatischen Ländern zum Einsatz - genauer: zur Kompilierung - kommt. Das betrifft natürlich in erster Linie periodische Agenten, die von einem chinesischen Serververwalter editiert werden, um die Startzeit zu ändern - aber deswegen meide ich es, wo immer es geht, denn dieser Agent verwendet eine Scriptbibliothek, die natürlich nicht mitkompiliert wird, wenn der Agent gespeichert wird - und schon stimmen die Variablennamen nicht mehr überein, weil sie in unterschiedlichen Codierungssystemen kompiliert wurden.
Es kann aber bereits viel simplere Beschränkungen geben. Dein amerikanischer oder französischer Kollege muß sich deinen Variablennamen jedesmal in die Zwischenablage nehmen, um ihn "schreiben" zu können, denn seine Tastatur hat die Umlaute nicht zur Verfügung.
Du fändest es auch nicht so prickelnd, wenn jeder zweite Variablenname deines französischen Kollegen ein c mit Komma drunter hätte.
In diesem Forumseditor weiß ich schon nicht, wie man vernünftig "garcon" scchreibt.