Excel 2013 VBA Grundkurs

Eindimensionale Arrays

Testen Sie unsere 1920 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Eindimensionale Arrays enthalten viele gleichartige Variablen, die über einen Index angesprochen werden. Bei Bedarf können sie auch dynamisch erzeugt werden, also während der Laufzeit ihre Größe ändern.

Transkript

Ein Array dient dazu, mehrere gleichartige Werte aufzunehmen. Das ist erstmals fiktiver als ich Ihnen hier zeige. Nämlich, eine Liste von Farben. Also, Sub ListeVonFarben . Um damit es möglichst einfach machen können, ohne jetzt schon als viel fortgeschrittene Programmierung zu brauchen. Das heißt, ich brauche zuerst ein Array. Ich muss bestimmen, wie groß es ist. Das heißt, sagen wir mal, es ist 5 Elemente groß. Ja, ich habe auch bemerkt, dass da eine 4 steht, weil ein Array 0 basiert ist. Nenn ich hier das oberste Element. Und das heißt, von 0 (eins, zwei, drei, vier) sind fünf Elemente. Die kann ich jetzt nach Herzenslust zuweisen. Also, zum Beispiel, das Element 0, das Erste ist die Farbe "rot". Das dritte Element, genau gesagt, das vierte mit der Nummer 3 ist die Farbe "blau". Natürlich, in Gänsefüßchen. Und das echte zweite Element, also, das mit der Nummer 0 ist die Farbe "grün". Das mag soweit reichen. Das sind mehrere Besonderheiten drin. Erstens, ich halte mich nicht an die Reihenfolge. Das müssen Sie nicht. Sie können Array nach Herzenslust in beliebiger Reihenfolge füllen. Und, zweitens. Die Elemente mit den Nummern 2 und 4 fehlen. Die sind aber nicht besetzt. Das macht nichts. Die haben dann ein Leer-String. Und zwar deswegen, weil es ein String Array ist. Eins aus Zeichenketten. Und das Mindeste, was ein String ist, ist ein Leerstring. Wenn es ein Double Array wäre, dann wäre das Mindeste eine 0, dann stünden also Zahlen drin. Wenn es ein Variant Array wäre, durchaus häufig, dann wäre da ein Null drinnen, ein Leer. Also, ich habe mindestens Leerstrings drin. Und jetzt kann ich die in der Schleife einfach mal überarbeiten, mit Dim intZähler As Integer. Da hole ich mir erstmals die passende Variable. Und kann dann for intZähler gleich "0 To 5" schreiben. Mit "Next" Grenzen und mit Debug.Print die Farbe mit der Nummer intZähler aufrufen. Und nach einem Doppelpunkt dann deren Inhalt nennen. Denn das ist aus dem Array dasjenige an der Position intZähler. Da gibt es kein Punkt value dahinter oder so. Es ist kein Objekt, sondern es ist ein Array und dessen so, und zu Filterinhalt liefert genau diese Farbe. Wenn ich das jetzt ausführe, dann werden Sie, erstens, sehen, dass ich zu viel angezeigt habe und, zweitens, da unten die übrigen Farben korrekt sind. Sie können ja direkt beenden. Das ist ein schlichter Schreibfehler. Es hat 5 Elemente, aber das oberste, schön, dass mir das mal wieder passiert ist, das oberste hat natürlich die Nummer 4 nur. Ich zeige es Ihnen nochmal. Also, hier alles weg. Da nochmal laufen lassen. Dann läuft das natürlich fehlerfrei durch. Es sind 5 Elemente, aber eben nur bis zur Position 4. Ja, soweit ein normales eindimensionales Array, welches begrenzt ist, sprich undynamisch. Ich muss mich vorher festlegen. Das will ich jetzt umbauen, so dass es flexibel ist. Das bedeutet, aus diesem normalen Array mit vorgegebener Größe wird jetzt ein dynamisches Array, welches sich nachträglich ändern darf. Das bedeutet zuerst: Hier muss die Angabe raus. Das ist ein dynamisches Array. Einfach deswegen, weil es noch gar keine Größe hat. Das darf es am Anfang auch nicht. Und bevor ich es erstmalig befülle, muss ich eine Größe vorgeben. Und das geschieht mit dem redim-Befehl. Der kann die letzte Dimension, wir haben jetzt noch eine, eines Arrays verändern. Und da ich überhaupt noch keine Dimension habe, muss ich das einmalig machen. Also, hier steht jetzt nachträglich, sozusagen, dieses dynamische Array ist 4 Farben groß. Da können wir ein bisschen Platz gewinnen. Und jetzt fehlt mir ein, ah, ne, wir brauchen noch eine Farbe. Und Programmablauf würde das bedeuten, dass Sie, während Sie irgendetwas nachladen, feststellen, da kommt mehr als erwartet, und Sie Platz schaffen müssen. Also, ein ReDim, ein erneutes ReDim, strFarben. Und müssen jetzt angeben, dass Sie einen mehr haben wollen. Sie müssen also erstmals nachfragen, wie viele sind eigentlich drin. Dafür gibt es 2 Funktionen UBound und LBound. Also Upper Bound, die obere Grenze, Lower Bound, die untere Grenze. Für die obere Grenze wissen, von dem Array. Das heißt, hier drin steht jetzt die Anzahl der Elemente, nämlich in dem Fall eine 4. Und da zähle ich einen drauf. Und das Ganze wird jetzt die Größe, die neue Größe des Arrays. Jetzt kann ich hier mit strFarbe in das fünfte Element, das gibt es jetzt, eine neue Farbe reinfüllen. Und sollte hier natürlich genau so nicht einfach fest auf 4 vorgeben, sondern das fehlt interessanterweise in der Liste, dieses UBound. Mit UBound wieder die obere Grenze abfragen. Weil dynamischen Arrays, also nie eine feststehende Größe nennen, sondern müssen immer so abfragen, bis wohin geht es. Das gibt jetzt eine Überraschung. Was ich hier mache (ich schiebe das mal wieder ein bisschen zusammen), ist, dass ich ein dynamisches Array erfinde, deklariere, hier festlege, das es 5 Positionen hat, bis zur Position 4. Die fülle ich. 0, 1 und 3. Und dann werde ich es mit ReDim wiederum vergrößern, nämlich um seine bisherige Größe +1 und schreibe dann "lila" rein. Dann gucke ich mir die alle an. Wir werden feststellen, die Überraschung besteht darin, dass nur noch das "lila" da ist. Das ReDim alleine ist nämlich skrupellos und räumt es mal auf und schafft dann Platz. Das, was ich wirklich gemeint habe, war ein ReDim Preserve. Also, ein ReDim, ein wieder dimensionieren, vergrößern und der Erhalt Preserve der bisherigen Inhalte. Wenn ich das laufen lasse, dann sind tatsächlich die vorherigen Farben in dem Fall noch da. Denken Sie also immer daran, wenn Sie mit ReDim neu aufräumen, vergrößern meistens Ihr Array, dass Sie das mit Preserve machen, sonst sind die Daten Ihrer letzten Dimension und das ist oft auch die einzige weg.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!