Microsoft Excel

Herbers Excel/VBA-Archiv

Frage zu Variant Variable

Betrifft: Frage zu Variant Variable von: Peter
Geschrieben am: 13.11.2012 15:18:38

Guten Tag

In einem alten Code gibt es ein paar Codezeilen, die ich nicht ganz verstehe. Diese stehen alle im Zusammenhang mit einer der Variable vntOpen, die als Variant deklariert wird (und der nach meinem Verständnis verschiedene Pfade von Dateien, die später geöffnet werden, übergeben werden).

''Codes mit vntOpen:

Dim vntOpen() As Variant
ReDim vntOpen(0)

dann wird sie in einer Abfrage verwendet
If IsError(Application.Match(strPathFile & rng.Text, vntOpen, 0)) Then
ReDim Preserve vntOpen(lngIndex)
vntOpen(lngIndex) = strPathFile & rng.Text
lngIndex = lngIndex + 1
Workbooks.Open (strPathFile & rng.Text)

Meine Fragen:
- was passiert bei ReDim vntOpen(0)
- warum kann in der Zeile ... If IsError nur der Name der Variable verwendet werden (wenn ich beim Abarbeiten des Codes mit der Maus darüber fahre, wird mir bei vntOpen kein Wert angezeigt).
- was passiert bei ReDim Preserve vtnOpen(lngIndex)

Danke und Gruss, Peter

  

Betrifft: AW: Frage zu Variant Variable von: ChrisL
Geschrieben am: 13.11.2012 18:37:20

Hi Peter

Variant kann grundsätzlich alles sein, Zahl, Textstring, Datum... (Datentyp)

Was für Dich neu ist, sind "Array"
http://de.wikipedia.org/wiki/Feld_%28Datentyp%29

Darin lassen sich mehrere Daten versorgen, eine ganze Liste von Daten. Mit der Liste, die in dieser Variable gespeichert ist, kannst du dann wie mit einer Excel-Tabelle umgehen und z.B. die Vergleichs-Funktion =VERGLEICH() anwenden (im Fall geschehen mit MATCH).

Wenn im Voraus unklar ist, wie gross das Array sein soll (Liste mit 5 Zeilen oder mit 50 Zeilen), dann kann man dieses nachträglich neu dimensionieren, wobei Preserve verhindert, dass der bereits enthaltene Inhalt gelöscht wird.

Ich hoffe es ist einigermassen verständlich. Jetzt wo du weisst wonach du Suchen musst findest du bestimmt auch Webseiten die dir das ganze noch genauer erklären.

cu
Chris


  

Betrifft: Ergänzung von: Luc:-?
Geschrieben am: 13.11.2012 19:12:20

Naamt, Peter;
1.Frage: ReDim vntOpen(0) ist hier wohl deshalb erforderl, weil anschließend mit der Variablen gearbeitet wdn soll → dazu muss sie wenigstens für ein Element (0) dimensioniert sein, da sie ein Datenfeld repräsentieren soll.
2.Frage basiert auf einem Missverständnis (s.zu VERGLEICH bei Chris), es wird damit der ganze DatenfeldVektor repräsentiert (eine Matrix wäre nicht mögl, weil Match so nur mit Vektoren arbeitet!) → es wird kein Wert angezeigt, weil der VBE-Intellisense das nur für Einzelwerte tut.
3.Frage wurde bereits von Chris ausreichend erklärt.
Gruß Luc :-?


  

Betrifft: AW: Frage zu Variant Variable von: Peter
Geschrieben am: 14.11.2012 21:27:36

Hallo Chris und Luc
Vielen Dank für die Ausführungen und Links.
Das hilft mir weiter.

Gruss, Peter


 

Beiträge aus den Excel-Beispielen zum Thema "Frage zu Variant Variable"