Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
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
Textbox wird nicht aus Tabelle geladen
15.09.2017 18:23:08
VpG
Hier wieder ein kleines Problem mit meinem Userform.
Ich wähle über die 3 Comboboxen einen Datensatz aus, trage die Bemerkungen ein und speichere das in die Tabelle, was
auch funktioniert.
Da ich mich vertippt habe, ändere ich das z.B. 3. BemerkungsTextfeld ab und speichere wieder, auch das wird in die Tabelle eingetragen.
Jetzt ist mir aufgefallen, wenn ich den Datensatz verlasse und dann z.B. zur Überprüfung zu diesem zurückkehre, dann wird mir wieder der ursprüngliche Wert im 3. Bemerkungsfeld angezeigt und nicht der, den in zuletzt gespeichert habe, obwohl er in der Tabelle steht.
Das Feld wird also, so meine Idee, aus dem Cache geladen oder woher auch immer, so dass mir hier ein falscher Wert angezeigt wird.
Schließe ich das Formular und rufe es komplett neu auf, werden die korrekten Werte aus der Tabelle angezeigt, also auch der, der nach der Korrektur
gespeichert wurde.
Das gilt übrigens für alle 3 Bemerkungstextboxen, also nicht nur für die 3.
Ein "Unload Me" in der Prozedur ist nicht so passend, dann muss ich jedes mal über alle 3 Comboboxen den Datensatz wieder neu laden. Es sollen also nur die die 3.Bemerkungstextfelder wirklich jedes mal aus der Tabelle geladen werden.
Anbei die Datei
https://www.herber.de/bbs/user/116278.xlsm
Hat jemand eine Lösung?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox wird nicht aus Tabelle geladen
15.09.2017 18:46:42
Matthias
Hallo
Könnte man z.B. so lösen:
Private Sub ComboBox1_Change()
'Kategorien auswählen
Dim temp
Dim kat As String
UserForm_Initialize
kat = Me.ComboBox1.Value
Dim lngZaehler As Long
Dim varVorhanden As Variant
ReDim temp(0)
If Me.ComboBox1.ListIndex  -1 Then
Me.ComboBox2.Clear
Me.ComboBox3.Clear
For zeile = 2 To letzte
If werte(zeile, 1) = kat Then
varVorhanden = Application.Match(werte(zeile, 2), temp, 0)
If IsError(varVorhanden) Then
ReDim Preserve temp(0 To lngZaehler)
Me.ComboBox2.AddItem werte(zeile, 2)
temp(lngZaehler) = werte(zeile, 2)
lngZaehler = lngZaehler + 1
End If
End If
Next zeile
End If
End Sub
Allerdings sollte man auch die Inhalte der Textbox-Objekte löschen,
wenn man eine andere "Kat" wählt
Gruß Matthias
Anzeige
AW: Textbox wird nicht aus Tabelle geladen
15.09.2017 18:59:57
Luschi
Hallo VpG,
Du muß beim Speicher nicht nur die Werte in die Tabelle schreiben, sondern auch auch das Array
'werte' aktualisieren, denn daraus holst Du ja die Informationen:

If Cells(zeile, CInt(Me.Controls("TextBox" & intZaehler).Tag)).NumberFormat = "0.00%" Then
Me.Controls("TextBox" & intZaehler) = Format(werte(zeile, CInt(Me. _
Controls("TextBox" & intZaehler).Tag)), "0.00%")
Else
Me.Controls("TextBox" & intZaehler) = werte(zeile, CInt(Me.Controls(" _
TextBox" & intZaehler).Tag))
End If
Außerdem solltest Du noch etwas einbauen, das die Chance()-Routinen der Comboboxen 2 & 3 nicht reagieren bzw. diese sofort wieder verlassen, wenn ComboBox1_Change() diese Befehle aufruft:
Me.ComboBox2.Clear
Me.ComboBox3.Clear
Das kann man mit boolschen Variablen realisiere. Beim Durchsteppen mit F8 im Quellcode wirst Du merken was ich meine - setze einen Breakpoint auf
Me.ComboBox2.Clear und drücke dann per F8 step by step den Code durch.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Textbox wird nicht aus Tabelle geladen
15.09.2017 21:38:38
VpG
Danke für Eure Infos, aber ich komme da irgendwie nicht nach.
Das Leeren der TextBoxen reicht nicht, auch wenn ich den Value auf " " setze, sobald ich durch die CoboBox3 den Datensatz aufrufe, kommt nicht der neue Wert aus der Tabelle sondern der ursprüngliche.
Mir fehlt eine Idee, wie ich die Userform komfortabel leeren kann. Ändere ich die Combobox1, sollen alle Elemente, also Combobox 2 und 3 und alle TextBoxen geleert werden. Ändere ich die Combobox2, soll nur die Combobox3 und alle TextBoxen geleert werden.
AW: Textbox wird nicht aus Tabelle geladen
16.09.2017 00:24:07
Luschi
Hallo VpG,
im Ereignis 'UserForm_Initialize()' ladest Du mit diesem Befehl 'werte = Tabelle1.UsedRange' die Tabellenwerte in ein Array mit dem Namen 'werte'. Dieses Array wird aber nie wieder!!! aktualisiert.
Alle Informationen für die 3 Combo- und den 9 Textboxen holst Du immer wieder aus dem Array aber nicht aus den aktualisierten Tabellenwerten, wie z.B. hier: Me.ComboBox3.AddItem werte(zeile, 3)
Schreibe als letzten Befehl in der Speichern-Routine:
werte = Tabelle1.UsedRange
und Alles wird gut, denn jetzt wird der Inhalt des Arrays 'werte' aktualisiert mit dem Inhalt der soeben aktualisierten Tabellenwerten.
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige