Array aus mehreren Inputs

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Array aus mehreren Inputs
von: Luca Meier
Geschrieben am: 22.10.2015 09:09:15

Hallo zusammen, ich habe eine UserForm, in welcher der User ein Name für den Input und 3 Range inputs eingeben kann. Nun soll es möglich sein, dass er, nach Eingabe der 4 Dinge, ein Knopf drückt und der Name mit den Werten in einer Listbox erscheint. Danach sollen sich die Inputs "leeren" so dass er weiter Inputs tätigen kann. Dies theoretisch unendlich vielmal.
Ich dachte nun könnte ich das ganze mit Arrays programmieren, jedoch scheitere ich in der Umsetzung: Wie sollte der Code aussehen damit der User beliebig viele Inputs machen kann, aber gleichzeitig nachträglich noch einzelne ändern kann (wenn er bei der ListBox ein Input auswählt) ?
Gruss

Bild

Betrifft: AW: Array aus mehreren Inputs
von: Daniel
Geschrieben am: 22.10.2015 09:30:14
Hi
kannst du prinzipell mit Arrays machen.
du musst nur bedenkten, dass wenn du ein Array erweitern willst, ohne dass die bereits vorhandenen Daten verlorgen gehen, (Redim Preserve) du immer nur die letzte Dimension (bei 2-D-Arrays also die Spalten) verändern kannst, die anderen Dimensionen können nicht erweitert werden und müssen ihre ursprünglichen Grenzen behalten.
Weil die Listbox aber zeilenweise arbeitet, kannst du dieses Array dann nicht direkt in die Listbox übergeben, sondern müsstest es erst noch transponieren (Zeilen und Spalten tauschen)
wenn du aber nicht mehr als 10 Spalten hast, kannst du aber mit .AddItem die Listbox direkt erweitern und brauchst kein zusätzliches Array.
Gruß Daniel

Bild

Betrifft: AW: Array aus mehreren Inputs
von: Luca Meier
Geschrieben am: 22.10.2015 09:33:56
Hi Daniel
danke erstmal. Meine Idee war nun für jeden Input ein Array zu machen, sprich ein Array Bezeichnungen(), dann einer xValues() einer y1Values() und y2Values() ... das ganze wird dann für das plotten eines Diagramms benötigt. Meine Idee war beim Button_click sozusagen den Array zu füllen mit Bezeichnungen(i) = TextBox1.Value und dann additem Bezeichnungen(i) und dann i = i + 1, so dass der User beliebig viele INputs hat? geht das so? im Moment bekomme ich immer den Fehler das der Index ausserhalb des gültigen Bereich ist. Geht das überhaupt so wie ich es mir denke oder nicht?

Bild

Betrifft: AW: Array aus mehreren Inputs
von: Rudi Maintaire
Geschrieben am: 22.10.2015 11:14:50
Hallo,
dafür brauchst du keine Arrays.
z.B.

Private Sub CommandButton1_Click()
  With ListBox1
    .AddItem
    .List(.ListCount - 1, 0) = TextBox1
    .List(.ListCount - 1, 1) = TextBox2
    .List(.ListCount - 1, 2) = TextBox3
    .List(.ListCount - 1, 3) = TextBox4
  End With
  TextBox1 = ""
  TextBox2 = ""
  TextBox3 = ""
  TextBox4 = ""
  TextBox1.SetFocus
End Sub

Das kannst du machen, bis der Arzt kommt.
Gruß
Rudi

Bild

Betrifft: AW: Array aus mehreren Inputs
von: Luca Meier
Geschrieben am: 22.10.2015 11:22:57
Hi Rudi
ja klar so könnte ich es schon machen, nur geht es mir ja darum, dass der User das Formular ausfüllen soll, danach den Knopf drücken, es die Inputs als Variablen abspeichert und er dass x-beliebig mal wiederholen kann, d.h. kann ich ja nicht einfach 1000 Variablen definieren und der Code würde ja lächerlich lange werden :S

Bild

Betrifft: AW: Array aus mehreren Inputs
von: Rudi Maintaire
Geschrieben am: 22.10.2015 11:39:57
Hallo,
du hast doch die Listbox.
z.B.

Private Sub CommandButton2_Click()
  With ListBox1
    Sheets(1).Cells(1, 1).Resize(.ListCount, .ColumnCount) = .List
  End With
End Sub

oder
Private Sub CommandButton2_Click()
  Dim vArr
  vArr = ListBox1.List
  ReDim Preserve vArr(UBound(vArr), ListBox1.ColumnCount - 1)
  machWas vArr
End Sub
Sub machWas(vArr)
  Sheets(1).Cells(1, 1).Resize(UBound(vArr) + 1, UBound(vArr, 2) + 1) = vArr
End Sub
Gruß
Rudi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Array aus mehreren Inputs"