Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe bei Redim array

Hilfe bei Redim array
08.12.2016 08:21:07
Max2
Hallo Leute,
ich habe wenig Erfahrung mit Arrays und bräuchte für folgenden Code Snippet eure Hilfe:

For Each txtb In UserForm1.Controls
If TypeOf txtb Is MSForms.TextBox Then
If txtb.Tag = "B1" Then
ReDim arrDaten(1 To (txtb.Value), 5)
End If
End If
Next
Ich habe eine UF mit vielen TextBoxen, txtb ist als MSForms.Controls deklariert.
Das Array habe ich so deklariert: Dim arrDaten() As Integer
Es sind immer 5 TextBoxen Gruppiert auf der UF, deshalb "If txtb.Tag".
Ich möchte nun, wenn die Gruppe gefunden wurde, die Werte ins Array schreiben.
Geht das so wie ich es gemacht habe?
Mit "Redim arrDaten(1 To (txtb.Value), 5)", oder muss ich die TextBox Values anders in das Array schreiben ?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei Redim array
08.12.2016 08:27:21
Fennek
Hallo Max,
zuerst Danke für den Code gestern: wieder was gelernt.
Im Prinzip könnte es gehen, aber vermutlich ist "txtb.Value" ein String, benötigt wird aber eine Zahl, also Val().
Wird wirklich ein 2-dim Array gebraucht?
mfg
AW: Hilfe bei Redim array
08.12.2016 08:35:52
Max2
Also zu den TextBoxen nochmal kurz:
Ich habe die Horizontale "Spalte" B1 bis B15 und die Vertikale "Spalte" 1 bis 5.
Deshalb dachte ich mir, brauche ich ein 2-Dimensionales Array, aber jetzt wo du es erwähnt hast, glaube ich brauche ich lediglich ein 1-Dimensionales Array.
Bei den String Werten bin ich mir nicht sicher, schließlich habe ich ja durch mein KeyPress Event von gestern ausschließlich Zahlen zugelassen.
Aber die Integer Werte kann ich ja auch einfach in Strings umwandeln anschließend.
Anzeige
AW: Hilfe bei Redim array
08.12.2016 13:58:24
ChrisL
Hi Max
Leider ist die Frage ziemlich unklar. Vielleicht fehlt mir auch die Vorgeschichte.
1. Ob du ein 1- oder 2-dimensionales Array brauchst weisst nur du.
2. Was hat der Inhalt der TextBox (txtb.Value) mit der Dimensionierung zu tun.
3. Horizontale Spalten würde ich gerne mal sehen.
4. Ist die Anzahl TextBox variabel oder fix? Ich vermute fix, dann wäre die Dimensionierung doch im Vornherein klar.
5. Die Dimensionierung innerhalb einer For-Next Schleife vorzunehmen macht m.E. nur Sinn, wenn die Anzahl TextBox variabel ist. In dem Fall müsste dann aber mittels "Redim Preserve" gearbeitet werden, weil sonst geht mit jeder Neudimensionierung der Inhalt verloren.
6. Ja, TextBox Inhalt ist sicherlich ein String und muss ggf. mittels CInt(TextBox) umgewandelt werden.
7. Fällt mir bestimmt noch was ein... ;)
cu
Chris
Anzeige
AW: Hilfe bei Redim array
08.12.2016 15:28:36
Max2
1. ich brauche ein 1-Dimensionales Array
2. ich denke nichts? ich habe nicht viel mit Arrays gearbeitet bzw. habe keinen Schimmer von Arrays
3. ja da hab ich mich wohl etwas falsch ausgedrückt ;)
wollte damit lediglich ein Raster beschreiben...warum auch immer ich nicht einfach Raster geschrieben habe
4. Sie ist für den Moment fest aber wer weiß was die Zukunft bringt
5. Habe ich schmerzhaft lernen müssen beim ausprobieren, hat mir immer alles überschrieben *würg*
6. dieser Punkt ist erledigt
7. Danke für deine Hilfe!
AW: Hilfe bei Redim array
08.12.2016 16:30:15
ChrisL
Hi Max
Zur Vollständigkeit noch mögliche Varianten:
1. mit Array
Es gilt zu berücksichtigen, dass der erste Wert vom Array einen Index 0 (null) hat. Würde man dies ignorieren (es kommt darauf an, wie du das Array schlussendlich verwendest), dann könnte man "If iCounter = 0" weglassen und mit 1 beginnen.
Private Sub CommandButton1_Click()
Dim iCounter As Integer, txtb As Control
iCounter = 0
For Each txtb In UserForm1.Controls
If TypeOf txtb Is MSForms.TextBox Then
If iCounter = 0 Then
ReDim ar(iCounter) As Variant
Else
ReDim Preserve ar(iCounter) As Variant
End If
ar(iCounter) = txtb.Value
iCounter = iCounter + 1
End If
Next
MsgBox "Prüfe für Test Inhalt von TB2: " & ar(1)
End Sub

2. mit Collection
Eine Collection kann man als Array interpretieren, nur ist es einfacher im Handling (Dimensionierung entfällt)
Private Sub CommandButton1_Click()
Dim txtb As Control
Set DeineCollection = New Collection
For Each txtb In UserForm1.Controls
If TypeOf txtb Is MSForms.TextBox Then
DeineCollection.Add txtb.Value
End If
Next
MsgBox "Prüfe für Test Inhalt von TB2: " & DeineCollection(2)
End Sub

cu
Chris
Anzeige
AW: Hilfe bei Redim array
08.12.2016 15:56:44
Max2
Habe es jetzt erstmal so gemacht:

For i = 1 To 5
tbv(i) = UserForm1.Controls("TextBox" & i).Value
If tbv(i) = "" Then
tbv(i) = "0"
End If
arrDaten(i) = tbv(i)
Next i

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige