Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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
TextBoxen speichern
10.11.2017 10:41:41
Felix
Hallo zusammen,
Ich habe mehre Userformen mit Textboxen und ComboBoxen.
Bisher werden über ein Click-Ereignis in der Form
Tabelle1.Cells( a, 1).Value = TextBox1.Text
Tabelle1.Cells(a , 2).Value = TextBox2.Text
Usw.
die Inhalte der Boxen zeilenweise in die jeweiligen Zellen auf Tabelle 1 geschrieben.
Das funktioniert auch ohne Probleme.
Jetzt möchte ich das aber „umstellen“, sodass die Spalte auch durch eine Variable abgebildet wird.
Dabei soll nachgeguckt werden, was in der Zeile 3 der Tabelle (als Textinhalt) steht. Dieser Inhalt soll dann mit dem Namen der TextBoxen verglichen und in die so ermittelte Spalte dann der Inhalt der Textbox geschrieben werden.
Bspw. soll der Inhalt der Textbox mit dem Namen „Baum“ auch in die Spalte geschrieben werden, die in der 3. Zeile das Wort „Baum“ enthält. Das hat den Hintergrund, dass immer wieder neue Spalten „zwischendurch“ eingefügt werden, sodass das einfache Abzählen der Spalten nicht mehr passt. Und leider befinden sich auch leere Spalten dabei :/
Und das ganze muss dann für über 100 Boxen durchgeführt werden…
Ich hoffe ich konnte mein Problem einigermaßen verständlich schildern.
Leider beinhaltet die Datei sensible Daten, sodass ich sie nicht hochladen kann.
Hat jemand hier eine Idee?
Gruß Felix

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBoxen speichern
10.11.2017 10:55:12
Werner
Hallo Felix,
so:
Private Sub CommandButton1_Click()
Dim loSpalte As Long
On Error Resume Next
If IsError(WorksheetFunction.Match(Me.TextBox1, Rows(3), 0)) Then
MsgBox "Begriff nicht vorhanden"
Else
loSpalte = WorksheetFunction.Match(Me.TextBox1, Rows(3), 0)
MsgBox "Spalte Nummer  " & loSpalte
End If
On Error GoTo 0
End Sub
Gruß Werner
AW: TextBoxen speichern
10.11.2017 11:38:14
Felix
Hallo Werner,
vielen Dank für die schnelle Antwort.
Leider funktioniert das nicht so wie es soll.
Ich muss den Namen der Textboxen mit dem Inhalt der einzelnen Zellen in Zeile 3 der Tabelle 1 vergleichen (das ist quasi die Kopfzeile), um dann bei einer Übereinstimmung den Inhalt der TextBox in die identifizierte Zelle zu schreiben.
Also soll meine TextBox nicht mehr TextBox1 heißen, sondern Baum.
Und die dazugehörige Spalte heißt auch Baum (=Inhalt der dritten Zeile).
Der über die Userform eingetragene Inhalt soll dann automatisch in die richtige Spalte eingetragen werden.
Gruß Felix
Anzeige
AW: TextBoxen speichern
10.11.2017 11:53:19
Werner
Hallo Felix,
dann so?
Private Sub CommandButton1_Click()
Dim loSpalte As Long
On Error Resume Next
If IsError(WorksheetFunction.Match(UserForm1.Baum.Name, Rows(3), 0)) Then
MsgBox "Begriff nicht vorhanden"
Else
loSpalte = WorksheetFunction.Match(UserForm1.Baum.Name, Rows(3), 0)
MsgBox "Spalte Nummer  " & loSpalte
End If
On Error GoTo 0
End Sub
Gruß Werner
AW: TextBoxen speichern
10.11.2017 12:52:26
Felix
Hallo Werner,
dein Code zeigt mir die Spalte der TextBox an.
Aber wie kann ich daraus eine Schleife machen, die das ganze dann automatisch in die Speicherroutine setzt?
ich habe meinen bisherigen Code in den Grundzügen hier gefunden: https://www.online-vba.de/vba_tutorialuserform.php
Mein Code zum Speichern sieht so aus:
Private Sub CommandButton3_Click()
Dim lZeile As Long
Dim Spaltennummer As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Wir müssen prüfen, ob die ID Spalte auch gefüllt ist!!
If Trim(CStr(Baum.Text)) = "" Then
'Meldung ausgeben
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Abbrechen des Speicherroutine
Exit Sub
End If
'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 4 'Start in Zeile 2, Zeile 1 sind ja die Überschriftrn
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
'Eintrag gefunden, TextBoxen in die Zellen schreiben
'            Tabelle1.Cells(lZeile, Spaltennummer).Value = Trim(CStr(Baum.Text))
'            Tabelle1.Cells(lZeile, Spaltennummer).Value = Hoehe.Text
'            Tabelle1.Cells(lZeile, Spaltennummer).Value = Zustand.Text
'            Tabelle1.Cells(lZeile, Spaltennummer).Value = Anzahl.Text
'            Tabelle1.Cells(lZeile, Spaltennummer).Value = Nachbarn.Text
'            Tabelle1.Cells(lZeile, Spaltennummer).Value = Bemerkung.Text
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(Baum.Text))
Tabelle1.Cells(lZeile, 2).Value = Hoehe.Text
Tabelle1.Cells(lZeile, 3).Value = Zustand.Text
Tabelle1.Cells(lZeile, 4).Value = Anzahl.Text
Tabelle1.Cells(lZeile, 5).Value = Nachbarn.Text
Tabelle1.Cells(lZeile, 6).Value = Bemerkung.Text
'Die ListBox muss nun neu geladen werden
'allerdings nur wenn sich der Name (ID) geändert hat
If ListBox1.Text  Trim(CStr(Baum.Text)) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End Sub

Es müssen ja alle Textboxen durchgegangen werden und für die Variable Spaltennummer immer ein anderer Wert genommen werden.
Gruß Felix
Anzeige
AW: TextBoxen speichern
14.11.2017 11:59:02
Felix
Hallo,
ich bin immer noch nicht weiter...
Wie baut man so eine Schleife auf?
Sehe ich den Wald vor lauter Bäumen nicht? :/

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige