Excel VB Array
Inhaltsverzeichnis
- 1 Excel VB Array
- 2 Dieser Weg.. zum Array
- 3 Multiple Zahlenwerte speichern – Excel VB Array
- 4 Karte ziehen
- 5 6 Zahlen, ein Array – Excel VB Array
- 6 So nicht!
- 7 Warum ein Etui statt eines Kartons? – Excel VB Array
- 8 Zahlen in Array speichern – Excel VB Array
- 9 Zahlen nachträglich hinzufügen – Excel VB Array
- 10 Das Lottobeispiel selbst
Excel VB Array
Du möchtest mit dem Excel VB Array arbeiten und lernen, bzw. verstehen wie das Array funktioniert?
Dann lege jetzt in meinem heutigen Beitrag los und wende das Array anschließend erfolgreich in Excel VB an!
Vielleicht hast Du auch noch an anderen Beiträgen Interesse: Email senden, Tastendruck simulieren, Select Case.
Dieser Weg.. zum Array
Ein Array ist erstmals vielleicht nicht der vorherrschende Sinnesgedanke, wenn man tatsächlich das erste Mal auf Diese stolpert.
Ich denke, dass es einfach nur eine Weiterentwicklung aus Not heraus ist, weil man an die Grenzen der bisherigen Werkzeuge gestoßen ist.
Sobald man versteht, dass Variablen nur einen Wert speichern können, wird man durch Suchen wie: „Mehrere Strings zwischenspeichern“, „Integer durchlaufen“, etc. irgendwann auf Arrays stoßen.
Multiple Zahlenwerte speichern – Excel VB Array
Stellen wir uns an dieser Stelle mal eine gute alte Lottospiel Runde vor.
Ich empfinde es so für unser Beispiel wesentlich einfacher, da man sich so etwas Konkretes vorstellen und damit besser arbeiten kann.
Bei unserem kleinen Lotto-Versuch dachte ich an das einfache „Super 6„-Spiel, wo wir den Nutzer 6 Zahlen zwischen 1 und 9 aussuchen lassen.
Karte ziehen
Bevor wir mit unserer kleinen Partie beginnen können, müssen wir überlegen, wie der Nutzer eine Zahl wählen kann und wie wir Diese dann in ein Array bekommen.
Ich denke hier würde sich eine InputBox mit „Ja/Nein“ durchaus anbieten, daher verwenden wir Diese.
Dim number number = InputBox("Enter your number please!")
Da wir nun eine Zahl der 6 Zahlen für unser Lotto erhalten haben, wäre vermutlich der nächste Gedanke, wie man die Nummer nun in ein Array speichert.
6 Zahlen, ein Array – Excel VB Array
Im obigen, Beispiel konntest Du sehen, wie Du eine Zahl für unser Lottospiel in eine Variable legen kannst.
Eine Variable ist im ersten Sinne dazu da, einen Wert zu speichern, mehr kann Sie auch nicht aufnehmen.
Auch wenn Dieser Wert z. B. ein Objekt einer eigenen Klasse ist passt in eine Variable nur Eines davon.
Oft hat man als Neuling ein Problem, wenn man das erste Mal statt eines Datenelements, Mehrere zwischenspeichern soll.
Für gewöhnlich hat man am Anfang seine Probleme damit, mehrere Daten speichern zu müssen, oder zu wollen.
Nun ist der beste Zeitpunkt die Excel VB Arrays ins – im wahrsten Sinne des Wortes – Spiel kommen zu lassen.
So nicht!
Beim Arbeiten mit Quellcode und den dort auftretenden Problemen kommt man immer wieder zur Recherche nach diversen Themen.
Aller Probleme nach gibt es auch sehr viele nicht so prickelnde Beispiele, ich denke das Folgende dürfte für unser Beispiel passen:
Dim number1 As Integer Dim number2 As Integer Dim number3 As Integer Dim number4 As Integer Dim number5 As Integer Dim number6 As Integer
Sehr oft habe ich diese blöde Variante bei den verschiedensten „Programmierern“ im Quellcode gefunden, natürlich speziell bei Grünschnäbeln #nooffense!
Auch wenn man diese Herangehensweise natürlich häufiger bei noch nicht so erfahrenen Entwicklern sieht, habe ich es auch schon bei Fortgeschrittenen gesehen.
Dieser Stil wird häufig wegen der augenscheinlichen Einfachheit, statt passender Datentypen verwendet.
Ich denke das hauptsächliche Problem wird Dir bewusst, wenn ich Dich bitten würde, die Variablen zu durchlaufen, denn so ist das schwierig.
Warum ein Etui statt eines Kartons? – Excel VB Array
Wieso sollte man eine Lottokugel in ein einzelnes Etui stecken, wenn alle Kugeln direkt in einem kleinen Karton gemeinsam untergebracht werden könnten?
Der Karton dient hier als Analogie zum Excel VB Array, wo man eben mehrere Elemente hineinspeichern kann.
Als nächstes zeige ich, wie Du ein Array deklarieren, bzw. initialisieren und danach verwenden könntest.
Zahlen in Array speichern – Excel VB Array
Hier zeige ich Dir, wie das Array erstellst und danach mit den Lottozahlen bestücken kannst.
Denke immer daran, dass die Arrays in der Programmierung generell bei 0 zu zählen anfangen.
Deklaration
Ohne Fassungsvermögen
Dim numbers()
Mit Fassungsvermögen
Hier ist ein Beispiel einer Deklaration mit festgelegtem Fassungsvermögen:
Dim numbers(3)
Initialisierung
Neben den hier drüber gezeigten Deklarationen, kannst Du mit den folgenden Zeilen ein Array initialisieren, sprich direkt mit Werten bestücken.
Dim numbers numbers= Array(3, 7, 4)
Direkter Zugriff auf Elemente
Hier greifen wir händisch, bzw. manuell auf das jeweilige Element zu, indem wir den Index direkt angeben:
Dim numbers(2) numbers(0) = 5 numbers(1) = 9 numbers(2) = 3
Jede Zahl mit Schleife durchlaufen
Nun gehen wir jeden einzelnen Index unseres Excel VB Array mit einer Schleife durch und können die einzelnen Werte setzen:
For i = LBound(numbers) To UBound(numbers) numbers(i) = ' a value! Next
Zahlen nachträglich hinzufügen – Excel VB Array
Auch wenn wir in unserem „Super 6“-Lottospiel die genaue Anzahl an Zahlen kennen, muss man vermutlich irgendwann weitere Elemente hinzufügen.
Dazu können wir das ReDim-Statement zusammen mit dem Preserve-Schlüsselwort nutzen.
Damit wir die Größe des Arrays zu neu festegelegt und die bisherigen Daten darin erhalten.
Dim numbers numbers = Array(3, 5) ReDim Preserve numbers(2) numbers(2) = 7
Nach Ausführung befinden sich die Zahlen 3, 5 und 7 im Array.
Das Lottobeispiel selbst
In diesem Abschnitt fragen wir den Nutzer einfach nach 6 Zahlen und sammeln Diese im Excel VB Array.
Dim numbers numbers = Array() Dim number Dim newBounds For i = 1 To 6 newBounds = UBound(numbers) + 1 ReDim Preserve numbers(newBounds) number = CInt(InputBox("Please provide number " & i)) numbers(newBounds) = number Next
Danach könnte man noch hingehen und eine Überprüfung einbauen, ob der Nutzer die Zahlen tatsächlich erraten hat, aber das überlasse ich dann Dir 😉!