Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Textbxänderung in Tabelle zurückschreiben


Betrifft: Textbxänderung in Tabelle zurückschreiben von: Brigitte
Geschrieben am: 15.08.2018 09:23:32

Hallo Forum,

ich bin immer noch neu hier und immer noch VBA-Anfänger.

Ich bekomme in einer Datenmaske in einer Listbox Daten angezeigt. Bei Markierung eines Datensatzes, werden die entsprechenden Daten in TextBoxen angezeigt.

Wie kann ich jetzt Änderungen, die ich in den TextBoxen getätigt habe, wieder in die Tabelle zurückschreiben und zwar genau da, wo sie hin sollen?

Besteht außerdem die Möglichkeit über das Suchfeld in einer Art LiveVorschau die Datensätze so zu reduzieren, dass bei einem Eintrag z.b. eines Buchstabens M, die Datensätze so zu reduzieren, dass nur alle Kunden angezeigt werden, die mit M beginnen. Beim Eintrag des zweiten Buchstabens z.b. Me wieder zu reduzieren usw.?

Da ich Anfängerin bin, wäre eine Erläuterung für Lösung für mich sehr hilfreich. Danke

Brigitte

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

  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: ChrisL
Geschrieben am: 15.08.2018 09:57:53

Hi Brigitte

Für Teil 1 die Lösung.

Public b As Boolean

Private Sub cmdAendern_Click()
If ListBox1.ListIndex >= 0 Then
    With ActiveSheet
        b = True
        .Cells(ListBox1.ListIndex + 2, 1) = TextBoxPin.Value
        .Cells(ListBox1.ListIndex + 2, 2) = TextBoxName.Value
        'usw.
        b = False
    End With
Else
    MsgBox "es wurde keine Auswahl getroffen"
End If
End Sub

Private Sub ListBox1_Click()
If b Then Exit Sub

    With ListBox1
         UserForm1.TextBoxPin = .List(.ListIndex, 0)
         UserForm1.TextBoxName = .List(.ListIndex, 1)
         UserForm1.TextBoxVorname = .List(.ListIndex, 2)
         UserForm1.TextBoxGeb = .List(.ListIndex, 3)
         UserForm1.TextBoxSex = .List(.ListIndex, 4)
         UserForm1.TextBoxAbteilung = .List(.ListIndex, 5)
            
     End With
    
    TextBoxSuch.SetFocus

End Sub

Teil 2: Wenn du eine ComboBox anstelle einer ListBox verwendest, dann erhältst du Textvorschläge.

Wenn du in der ListBox filtern willst, dann wird es relativ kompliziert und du müsstest grundlegend umbauen. Als VBA-Einsteiger würde ich mich auf die anderen Herausforderungen konzentrieren (z.B. Format(Geburtsdatum, "DD.MM.YYYY")).

cu
Chris


  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: Brigitte
Geschrieben am: 15.08.2018 10:30:33

Hallo Chris,

dein Code funktioniert einwandfrei. Vielen Dank. Du hast mir sehr geholfen.

Gibt es denn eine andere Möglichkeit eine Suchfunktion einzubauen?

Danke

Brigitte


  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: ChrisL
Geschrieben am: 15.08.2018 11:13:09

Hi

Danke für die Rückmeldung.

Eine ComboBox scheint mir das einfachste.

Ansonsten kennzeichne die Frage wieder als offen. Vielleicht hat jemand Zeit/Lust etwas für dich zu bauen.

cu
Chris


  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: Brigitte
Geschrieben am: 15.08.2018 11:14:15

Hallo Chris, hallo Forum,

da ich Anfängerin bin folgende Frage:

Was macht die Variable b???

Warum ListIndex +2 im Code???
.Cells(ListBox1.ListIndex + 2, 1) = TextBoxPin.Value

Ich versuche die Lösung nachzuvollziehen und habe dort noch Klärungsbedarf. Danke

Brigitte


  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: Brigitte
Geschrieben am: 15.08.2018 11:17:29

Hi Forum,

Sorry, aber ich habe vergessen das Häkchen bei Nichtbeantwortung der Frage, (wobei das ja so nicht stimmt) zu setzen.

Brigitte


  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: ChrisL
Geschrieben am: 15.08.2018 12:28:38

Hi

ListIndex 0 = 1. Wert = 2. Zeile
ListIndex 1 = 2. Wert = 3. Zeile
darum Index + 2

Das Ändern der Zelle führt automatisch das ListBox Click Ereignis aus, was dazu führt, dass die ListBox gleich wieder neu geladen wird und die Werte wieder überschrieben werden. Mit der Variable setzt du kurzfristig ein Kennzeichen, welches im Click abgefragt wird.

In anderem Kontext würde man die Ereignisse kurzfristig mit EnableEvents abschalten, aber das geht hier nicht. Darum die Umgehungslösung mit der Variable.

cu
Chris


  

Betrifft: AW: Textbxänderung in Tabelle zurückschreiben von: Brigitte
Geschrieben am: 15.08.2018 12:43:01

Hallo Chris,

vielen Dank für die Infos. Danke

Brigitte


Beiträge aus dem Excel-Forum zum Thema "Textbxänderung in Tabelle zurückschreiben"