1 ) Warum hast Du bei der Deklaration statt "names" nun "rngNames" ?
Die Variablen kannst du benennen wie du möchtest. Es gibt da keine verpflichtenden Regeln. Allerdings hat sich über mittlerweile schon ein bis zwei Jahrzehnte hinweg eine Konvention (stille Übereinkunft) entwickelt ... allgemein wird sie als "ungarische Notation" bezeichnet (bekannt durch einen Leszynski, hauptsächlich durch MS Access). Für VB/VBA gibt es ganz spezielle Präfixe die man Variablen voranstellt, um anhand des Namens schneller erkennen zu können, mit welchem Datentyp man bei ihr zu rechnen (sie zu interpretieren) hat und man sich so daran im Umgang mit ihr orientieren kann. Das Präfix 'rng' steht z.B. für Range was u.A. ein Objekt von Excel darstellt. Aber wie gesagt, nicht jeder hält sich daran (weil u.a. kein Muss), manche haben auch ihre ganz eigenen Abwandlungen davon. Es gibt auch Leute die sich gänzlich dagegen aussprechen. Ist eine Geschichte für sich. ;o)
2) Warum wird bei "names = Array (...)" ohne Set gearbeitet?
Das kannst du dir in der VBA-Hilfe durchlesen. Kurz: Set (deu: "setzen") wird nur in Verbindung mit Objekten verwendet. Arrays sind keine Objekte sondern eine Datenstruktur (im einfachsten Fall eine Liste aus einzelnen Elementen in Reihe).
3) Was hätte ich denn bei der Array-Variante angeben müssen?
Bei der Array-Variante hättest du ebenfalls über das Range-Objekt gehen müssen, denn nur darüber kommst du an deine Werte (du hattest lediglich ein Datenfeld mit einem Element des Datentyps String mit dem Wert "I1:I33" erstellt).
names = wks.Range("I1:I33").Value
Hier bekommst du dann ein zweidimensionales Array (Zeile, Spalte => 2 Dimensional) zurück geliefert. Dadurch hätte man das Ansprechen der einzelnen Elemente (in deinem Fall also die Namen / Bezeichnungen) in den nachfolgenden Zeilen etwas verändern müssen.
names(i, 1)
Die Index-Variable i beginnt dabei bei dem Wert 1 bis UBound(names) ausfürhlicher geschrieben wäre es UBound(names, 1) ... die Eins gibt die Ebene an (1 ist jedoch Standard bei diesem Ausdruck - s. VBA-Hilfe).
Wenn noch Fragen offen sind, einfach fragen.
Gruß
|