Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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
Speichern TextBox Inhalte in Tabelle
11.08.2023 11:37:27
Torsten
Hallo zusammen,
ich bin neu in diesem Forum und bitte euch um eure Unterstützung. Ich habe eine Tabelle mit Daten die ich in einer UserForm bearbeiten möchte. Das öffnen und einlesen der Daten klappt wunderbar. In der Listbox kann ich auch die Daten anklicken und diese werden in die TextBoxen übernommen. Nun möchte ich die Daten in den TextBoxen ändern und danach wieder in der Tabelle in den selben Zeilen und Zellen speichern. Ich habe mal eine Datei angehängt. Den Filter für die Listbox und die Zeitformate kann ich selber ändern. Nur beim Speichern komm ich nicht weiter.
Ich danke euch im Voraus für einen Lösungsansatz.

VG Torsten

https://www.herber.de/bbs/user/162286.xlsm

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern TextBox Inhalte in Tabelle
11.08.2023 11:44:38
onur
Wenn du doch weisst, wie man die Textbox befüllt, weisst du doch auch, wie man sie in die Zellen zurückschreibt.
Einfach das Ganze umdrehen. Statt
txtStart.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 1)

das hier:
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 1) = txtStart.Text 
Speichern TextBox Inhalte in Tabelle
12.08.2023 08:21:19
Oberschlumpf
Hi Torsten,

hier, versuch mal
https://www.herber.de/bbs/user/162295.xlsm

Jetzt funktioniert es in Userform mit deiner gewünschten Änderung für Zielort.

Hintergrund:
Mit Klick auf den Button "Änderung speichern" wird nach Ausführung der Befehle...
...= txtStart.Text
...= txtZiel.Text

immer das Klick-Ereignis der Listbox ausgelöst (ich weiß nicht warum)

Das hat jedenfalls zur Folge, dass - VOR - dem Zuweisen neuer Werte in Tabelle, erstmal die alten Werte aus Tabelle wieder in die Listbox - und somit auch in die Textboxen! - eingetragen werden.
Deswegen erhält nur Zelle in Spalte A den neuen Wert, aber die Zellen in allen anderen Spalten erhalten wieder den alten Wert.

Lösung:
- in Modul1 hab ich die Public-Variable pboNOT hinzugefügt
- nach Klick auf den Button "Änderung speichern" wird die Variable pboNOT auf TRUE gesetzt
- im Klickereignis der Listbox prüfe ich, ob pboNOT = True; wenn JA, dann weiteren Code im Klickereignis - nicht - ausführen
- nachdem alle Änderungen aus Textboxen in Tabelle korrekt übertragen sind, wird pboNOT wieder auf FALSE gesetzt

Hilfts?

Ciao
Thorsten
Anzeige
Speichern TextBox Inhalte in Tabelle
13.08.2023 08:51:31
Torsten
Hi Thorsten,

Danke für die Erklärung. Es ist genau was ich gesucht habe und es funktioniert super.

VG Torsten
Speichern TextBox Inhalte in Tabelle
11.08.2023 12:20:34
Torsten
Hallo onur,

danke für deine schnelle Antwort. Klappt leider nur bedingt. Wenn ich die Daten in Start ändere werden diese übernommen, wenn ich aber Start und Ziel ändere wird nur der erste Eintrag geändert.

tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 1) = txtStart.Text
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2) = txtZiel.Text

Hast du da eine Idee warum das so ist?

Gruß Torsten
Speichern TextBox Inhalte in Tabelle
11.08.2023 12:31:23
GerdL
Moin,

die Nummern der Listbox-Spalten beginnen mit 0. !

Gruß Gerd
Anzeige
Speichern TextBox Inhalte in Tabelle
11.08.2023 14:21:51
Torsten
Hallo GerdL,

danke für den Hinweis, aber beim einlesen der Daten aus der Tabelle wird ja die erste Spalte mit 1 bezeichnet. Wenn ich jetzt den Code von onur nehme wird es ja auch wieder in der Zelle gespeichert. Nur wenn mehrere Zellen gleichzeitig geändert werden wird nur die erste Spalte gespeichert. Hier mal der gesamte Code. Ich hatte auch die Datei im ersten Beitrag hochgeladen.

Option Explicit
'
Dim LetzteZeiletblTabelle1 As String
Private Sub beenden_Click()
Unload Me
End Sub
Private Sub CommandButton4_Click()
DatenBuchen
End Sub
Private Sub UserForm_Activate()
ListboxDatenschreiben
End Sub
Private Sub ListboxDatenschreiben()
LetzteZeiletblTabelle1 = tblTabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
With ListBoxDaten
.ColumnCount = 8 'Anzahl der Spalten die übergeben werden A bis H
.RowSource = "Tabelle1!A2:H" & LetzteZeiletblTabelle1
End With
Label26 = ListBoxDaten.ListCount
End Sub
Private Sub ListBoxDaten_Click()
txtStart.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2)
txtZiel.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 3)
txtStartdatum.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 4)
txtStartzeit.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 5)
txtAnkunftszeit.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 6)
txtDatumAnkunft.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 7)
txtFahrer.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 8)
txtFzgKennz.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 9)
End Sub
Private Sub DatenBuchen()
With ListBoxDaten
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2) = txtStart.Text
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 3) = txtStartdatum.Text
End With
MsgBox "Daten gespeichert"
End Sub

Danke im Voraus für weitere Meldungen.
Gruß Torsten
Anzeige
AW: Speichern TextBox Inhalte in Tabelle
11.08.2023 12:34:13
onur
Keine Ahnung, ich kenne weder deine Datei noch den ganzen Code.
Speichern TextBox Inhalte in Tabelle
11.08.2023 16:05:37
Torsten
Hallo GerdL,

danke für den Hinweis, aber beim einlesen der Daten aus der Tabelle wird ja die erste Spalte mit 1 bezeichnet. Wenn ich jetzt den Code von onur nehme wird es ja auch wieder in der Zelle gespeichert. Nur wenn mehrere Zellen gleichzeitig geändert werden wird nur die erste Spalte gespeichert. Hier mal der gesamte Code. Ich hatte auch die Datei im ersten Beitrag hochgeladen.

Option Explicit
'
Dim LetzteZeiletblTabelle1 As String
Private Sub beenden_Click()
Unload Me
End Sub
Private Sub CommandButton4_Click()
DatenBuchen
End Sub
Private Sub UserForm_Activate()
ListboxDatenschreiben
End Sub
Private Sub ListboxDatenschreiben()
LetzteZeiletblTabelle1 = tblTabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
With ListBoxDaten
.ColumnCount = 8 'Anzahl der Spalten die übergeben werden A bis H
.RowSource = "Tabelle1!A2:H" & LetzteZeiletblTabelle1
End With
Label26 = ListBoxDaten.ListCount
End Sub
Private Sub ListBoxDaten_Click()
txtStart.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2)
txtZiel.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 3)
txtStartdatum.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 4)
txtStartzeit.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 5)
txtAnkunftszeit.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 6)
txtDatumAnkunft.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 7)
txtFahrer.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 8)
txtFzgKennz.Text = tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 9)
End Sub
Private Sub DatenBuchen()
With ListBoxDaten
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2) = txtStart.Text
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 3) = txtStartdatum.Text
End With
MsgBox "Daten gespeichert"
End Sub

Danke im Voraus für weitere Meldungen.
Gruß Torsten
Anzeige
AW: Speichern TextBox Inhalte in Tabelle
11.08.2023 18:15:39
onur
Das war doch nur ein Beispiel (für ZWEI der Textboxen), wie es geht
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2) = txtStart.Text

tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 3) = txtStartdatum.Text

Es sollte ja auch heissen:
tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 2) = txtStart.Text

tblTabelle1.Cells(ListBoxDaten.ListIndex + 2, 3) = txtStartdatum.Text
....
....
....

den Rest musst du schon selber machen.
Speichern TextBox Inhalte in Tabelle
12.08.2023 07:50:26
Torsten
Hallo onur,

danke für den Vorschlag, funktioniert leider nicht, überträgt immer nur die erste Zelle. Ich habe inzwischen alle Zeilen eingefügt. Hatte als Bsp auch nur zwei Zeilen geschrieben.

Anzeige
Anzeige

Infobox zum Thema

EXCEL - Speichern von Textbox-Inhalten in einen Zellbereich


Inhaltsverzeichnis


Die Fragestellung


Du möchtest den Inhalt einer Textbox in Excel VBA in einen bestimmten Zellbereich speichern.


Erläuterung des Problems {#erläuterung-des-problems}


Textboxen werden oft in UserForms in Excel VBA verwendet, um Benutzereingaben zu sammeln. Diese Eingaben müssen dann in einem Arbeitsblatt gespeichert werden, um sie für Berechnungen, Analysen oder Berichte verwenden zu können.


Lösung des Problems {#lösung-des-problems}


Um den Inhalt einer Textbox in einen Zellbereich zu speichern, kannst Du folgenden VBA-Code verwenden:

Sub SaveTextboxContent()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("DeinBlatt") ' Anpassen an den Namen deines Blattes
    Dim txtBox As TextBox
    Set txtBox = ws.TextBoxes("DeineTextbox") ' Anpassen an den Namen deiner Textbox

    ' Zielbereich definieren, wo der Text gespeichert werden soll
    Dim targetRange As Range
    Set targetRange = ws.Range("A1") ' Anpassen an den Zielbereich

    ' Textbox-Inhalt in den Zielbereich schreiben
    targetRange.Value = txtBox.Text
End Sub

Dieser Code geht davon aus, dass Du eine Textbox auf einem Arbeitsblatt hast. Wenn Du eine Textbox in einem UserForm hast, musst Du den Code entsprechend anpassen, um auf die Textbox im UserForm zuzugreifen.


Anwendungsbeispiele aus der Praxis


  • Datenerfassung: Speichern von Benutzereingaben aus einem Formular in eine Datenliste.
  • Feedback-Formulare: Übertragen von Feedback aus einer Textbox in eine Excel-Tabelle für weitere Analysen.

Tipps


  • Überprüfe immer den Namen der Textbox und des Arbeitsblattes, um sicherzustellen, dass der Code korrekt funktioniert.
  • Wenn Du mehrere Textboxen hast, kannst Du den Code in einer Schleife verwenden, um die Inhalte aller Textboxen zu speichern.

Verwandte Themenbereiche


  • VBA UserForms
  • Excel-Datenmanagement
  • Automatisierung von Dateneingaben

Zusammenfassung


Das Speichern von Textbox-Inhalten in einen Zellbereich mit VBA ist eine häufige Aufgabe, die für verschiedene Zwecke der Datenerfassung und -verarbeitung in Excel genutzt wird. Mit dem bereitgestellten Code kannst Du diese Aufgabe effizient umsetzen und sicherstellen, dass Benutzereingaben korrekt in deinem Arbeitsblatt gespeichert werden.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige