Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Array per Schleife füllen

Forumthread: Array per Schleife füllen

Array per Schleife füllen
21.01.2025 16:24:21
Chris
Hallo Forum,

ich habe 9 Togglebuttons, deren Caption ich in ein Array packen möchte, wenn der Value des Buttons = true ist.
Die Werte möchte ich anschließend per Komma getrennt in einer Msgbox ausgeben.

Bei unten stehendem Makro erhalte ich die Meldung "Index außerhalb des gültigen Bereichs"

Wo liegt der Fehler?
Gruß Chris



Sub x
Dim arr(9) As String
Dim i As Integer

For i = 7 To 15
If Userform1.Controls("Togglebutton" & i).Value = True Then
arr(i) = Userform1.Controls("Togglebutton" & i).Caption
End If
Next i

MsgBox Join(arr(i), ",")
End sub
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array per Schleife füllen
21.01.2025 16:27:51
RPP63
Moin!
Dim arr(9)

definiert einen Vektor mit 10 Plätzen (von 0 bis 9)
For i = 7 To 15

Lässt die ersten sieben Indizes (0 bis 6) leer und läuft ab 10 in den LZF

Gruß Ralf
AW: Array per Schleife füllen
21.01.2025 16:40:34
GerdL
Hallo Chris,

Dim arr(1 to 9) ...
und in der Schleife
arr(i - 6) = ...
könnte evtl. helfen
oder
Dim arr(8) ...
Und in der Schleife
arr(i - 7) = ...

Gruß Gerd
Anzeige
AW: Array per Schleife füllen
21.01.2025 16:49:02
Chris
Hallo Gerd,

in beiden Fällen immer noch "index außerhalb..."

Dim arr(8) As String

Dim i As Integer

For i = 7 To 15

If UF.Controls("Togglebutton" & i).Value = True Then
arr(i - 7) = UF.Controls("Togglebutton" & i).Caption
End If
Next i


Gruß
Chris
Anzeige
AW: Array per Schleife füllen
21.01.2025 16:59:30
Onur
Arr(8) ist doch falsch!

In eine Garage für ACHT Autos passen doch keine 15 Autos rein.
AW: Array per Schleife füllen
21.01.2025 17:18:24
Chris
ONUR: Garage ist gutes Bsp.
Aber wieso 15 Autos? For i = 7 to 15, sind max. 9 Autos.

AW: Array per Schleife füllen
21.01.2025 17:39:44
Onur
Es geht um die Nummer der Autos. Wenn sie die Nummer 15 haben, brauchst du 15 Parkplätze.
Wenn du DIM ar(8) schreibst, sind nur Plätze für Autos Nr 0 bis Nr 8 reserviert.
Es geht NICHT um die ANZAHL, sondern deren NUMMERN.
Wenn du DIM ar(7 to 15) schreibst, sind die Plätze für Nr 7 bis 15 reserviert.
Anzeige
AW: Array per Schleife füllen
21.01.2025 16:59:47
emkaes
Hallo,


MsgBox Join(arr(i), ",")

lass einfach (i) weg, dann klappts auch mit dem Nachbarn
AW: Array per Schleife füllen
21.01.2025 17:08:02
GerdL
OK.

Msgbox UF.Name
Msgbox UF.Controls("ToggleButton" & 7).Caption

Wo tritt so ein Fehler auf?

Gruß Gerd
AW: Array per Schleife füllen
21.01.2025 16:37:59
Chris
Hallo Ralf,

danke für die Rückmeldung.
Was muss geändert werden? Einfach einen besonders hohen Vektoren Wert anzugeben, funktioniert nicht.

Gruß
Chris
Anzeige
AW: Array per Schleife füllen
21.01.2025 16:48:59
Yal
Hallo Chris,

entweder:
Sub x()

Dim i As Integer
Dim arr(7 To 15) As String

For i = 7 To 15
With Userform1.Controls("Togglebutton" & i)
If .Value Then arr(i) = .Caption
End With
Next i

MsgBox Join(arr(i), ",")
End Sub

oder
Sub x()

Dim i As Integer
Dim msg As String

For i = 7 To 15
With Userform1.Controls("Togglebutton" & i)
If .Value Then msg = msg & ", " & .Caption
End With
Next i

MsgBox Mid(msg, 3)
End Sub


VG
Yal
Anzeige
AW: Array per Schleife füllen
21.01.2025 19:47:25
{Boris}
Hi,

was ist denn daran nicht zu verstehen?
Du definierst arr mit den "Nummern" 0 bis 9. Wenn Du jetzt ne Schleife von 7 bis 15 schreibst, um Deine Togglebutton anzusprechen, und möchtest in der selben Schleife arr füllen, dann musst Du vom Schleifenzähler i für arr nur 7 abziehen:

Dim arr(9) As String

Dim i As Integer

For i = 7 To 15
If Userform1.Controls("Togglebutton" & i).Value = True Then
arr(i-7) = Userform1.Controls("Togglebutton" & i).Caption
End If
Next i

MsgBox Join(arr(i), ",")


VG, Boris
Anzeige
AW: Array per Schleife füllen
21.01.2025 19:52:58
Onur
Dim arr(9) RESERVIERT arr(0), arr(1)...., bis arr(9) zum Speichern.
arr(15) gibt es nicht !
Wie Boris schrieb, musst du von i die Zahl 7 abziehen
oder
Dim arr(7 to 15)
schreiben, damit arr(7), arr(8)...., bis arr(15) reserviert werden.
AW: Array per Schleife füllen
21.01.2025 16:58:10
Chris
Hallo Yal,

unteres Makro läuft!

Oberes: Weiterhin "...außerhalb des gültigen Bereiches"
Lasse ich bei Msbox arr(i), das i weg, erhalte ich eine Msbgox mit bspw: "1,,,4,,,,,,".

Gruß
Chris
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18