Office: (Office 2016) Listenfeld ändern

Helfe beim Thema Listenfeld ändern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forum, ich benötige nochmal Eure Hilfe. Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Mampfred, 13. Dezember 2021.

  1. Listenfeld ändern


    Hallo Forum,

    ich benötige nochmal Eure Hilfe.
     
    Mampfred, 13. Dezember 2021
    #1
  2. Hallo Forum, ich benötige nochmal Eure Hilfe.

    In meiner UserForm sollen bei einer möglichen Änderung eines Datensatzes im Formular, die Änderungen in das Tabellenblatt übernommen werde.
    Bei meinem Code geschieht das aber nicht wie gewollt. Der geänderte Datensatz wird immer eine Zeile zu tief eingetragen.

    Ich bin Anfänger und bin zu keiner Lösung gelangt.
    Wo liegt mein Denkfehler bzw. was ist falsch an meinem Code? Wer kann mir mit Rat und Tat zur Seite stehen?

    Vielen Dank

    Der Mampfred
     
    Mampfred, 13. Dezember 2021
    #2
  3. Beverly
    Beverly Erfahrener User
    Hi,

    das Problem ist, dass zwischendurch die Prozedur lstDr_Click aufgerufen wird und da du die Variable lngZeile in jeder Prozedur neu definierst, wird dadurch die falsche Zeile übergeben. Weiterhin wird die ListBox erneut mit den Daten aus dem Tabellenblatt gefüllt, obwohl die Änderung im Tabellenblatt noch gar nicht stattgefunden hat. Nimm für jede Prozedur eine eigene Variable. Außerdem solltest du diese Zeilenvariable immer als Long deklarieren - habe beides geändert.
    Man kann die Tag-Eigenschaft eines Steuerelementes benutzen, um Inhalte zwischenzuspeichern, dann benötigt man keine Variablen. Ich habe den Code für den cmdAendern jetzt mal so geschrieben, dass bei Click auf diesen CommandButton die ausgewählte Zeile der ListBox in der Tag-Eigenschaft des cmdAendern zwischengespeichert und dann weiterverwendet wird - da gibt es keine Probleme mit Überschneidungen.
    Außerdem habe ich eine Variable blnAendern außerhalb aller Prozeduren definiert, damit sie prozedurübergreifend genutzt werden kann. Sie wird im Code des cmdAendern auf True gesetzt und in der Prozedur lstDr_Click wird geprüft, ob sie auf True steht - dann den Code des Click-Ereignisses nicht nochmal ausführen.


    Listenfeld ändern GrußformelListenfeld ändern Beverly's Excel - Inn
     
  4. Listenfeld ändern

    Hallo Beverly,

    zunächst möchte ich einmal festhalten, meine Frau liest nicht mit, du bist die Beste. Vielen Dank für deine Erläuterungen.
    Die Tag-Eigenschaft ist mir vollkommen unbekannt. Werde ich aber nachholen.
    Bei den Listeneinträgen 4 bis 6, also die Einträge ohne Nummer, funktioniert die Änderung einwandfrei. Jedoch bei den mit Nummern versehenden Einträgen, klappt die Änderung nicht.
    Wieso? Hast du eine Erklärung?

    Der Mampfred
     
    Mampfred, 13. Dezember 2021
    #4
  5. Beverly
    Beverly Erfahrener User
    Hi,

    ich kann nicht erklären WARUM das passiert, nur WAS passiert: das Click-Ereignis wird komischerweise bei jedem Eintrag ausgeführt und da die Variable blnAendern am Ende des Click-Ereignisses auf False gesetzt wird, läuft der Code beim nächsten Durchlauf in den If-Zweig und füllt die ListBox wieder mit den ursprünglichen Werten ohne dass die Zellen geändert werden. Wie schon gesagt - ich kann nicht erklären weshalb, ist mir so noch nicht untergekommen, vor allem da es nur bei den Zeilen mit einem Eintrag in Spalte O passiert.

    Ersetze die beiden Prozeduren für das Click-Ereignis und den cmdAendern-Button durch folgede beiden Prozeduren:

    Code:
    Private Sub lstDr_Click()
        Dim lngZeile4 As Long
        If blnAendern = False Then '<== nur ausführen beim tatsächlichen Click-Ereignis
            Sheets("MitteilungArzt").Activate
            lngZeile4 = dlgDrNeu.lstDr.ListIndex + 2
            With dlgDrNeu
              txtNr.Value = Cells(lngZeile4, 15).Value
              cboAnrede.Value = Cells(lngZeile4, 16).Value
              txtName.Value = Cells(lngZeile4, 17).Value
              txtPLZ.Value = Cells(lngZeile4, 18).Value
              txtOrt.Value = Cells(lngZeile4, 19).Value
              txtAnschrift.Value = Cells(lngZeile4, 20).Value
              txtTelefon.Value = Cells(lngZeile4, 21).Value
              txtFax.Value = Cells(lngZeile4, 22).Value
              txtEmail.Value = Cells(lngZeile4, 23).Value
            End With
        End If
    End Sub
    
    Private Sub cmdAendern_Click()
        Dim wb As Workbook
        Dim ws As Worksheet
        Set wb = ThisWorkbook
        Set ws = wb.Worksheets("MitteilungArzt")
        blnAendern = True
        cmdAendern.Tag = dlgDrNeu.lstDr.ListIndex + 2
        ws.Activate
        With ws
           .Cells(CLng(cmdAendern.Tag), 15) = txtNr.Value
           .Cells(CLng(cmdAendern.Tag), 16) = cboAnrede.Value
           .Cells(CLng(cmdAendern.Tag), 17) = txtName.Value
           .Cells(CLng(cmdAendern.Tag), 18) = txtPLZ.Value
           .Cells(CLng(cmdAendern.Tag), 19) = txtOrt.Value
           .Cells(CLng(cmdAendern.Tag), 20) = txtAnschrift.Value
           .Cells(CLng(cmdAendern.Tag), 21) = txtTelefon.Value
           .Cells(CLng(cmdAendern.Tag), 22) = txtFax.Value
           .Cells(CLng(cmdAendern.Tag), 23) = txtEmail.Value
        End With
        MsgBox "Die Datensatzänderung wurde durchgeführt!", vbInformation, "Datenäsatzänderung"
        FelderLoeschen
        blnAendern = False
    End Sub
    
    Jetzt wird die Variable blnAendern erst am Ende des Codes für den Button zurückgesetzt und der Code läuft nicht in den If-Zweig.



    Listenfeld ändern GrußformelListenfeld ändern Beverly's Excel - Inn
     
  6. Hallo Beverly,

    vielen lieben Dank, jetzt funktioniert es wie gewünscht.
    Aber jetzt mal von Expertin zu Anfänger. Wenn du schon keine Erklärung für das Verhalten des Codes geben kannst, ist doch sicherlich zu verstehen, dass ein Anfänger wie ich, der Verzweiflung nahe steht.
    Gott sei Dank gibt es aber hier das Forum.

    Bis später. Ich bin langsam auf den Geschmack gekommen und mein Projekt ist noch nicht am Ende.

    Viele Grüße und gesund bleiben

    Der Mampfred
     
    Mampfred, 13. Dezember 2021
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi,

    naja, es gibt eben immer wieder Situationen wo Excel nicht das macht was es eigentlich soll Listenfeld ändern *;)*. Das liegt teilweise an den vielen unterschiedlichen Excelversionen und in der einen Excelversionen muss nicht immer alles genau so funktionieren wie in der anderen. Excel ist halt ein Programm, das immer weiter entwickelt wird, wobei neues hinzukommt und teilweise auch in gewissem Sinne Rückschritte gemacht werden. Man muss halt nur wissen, wie man darauf reagieren muss/kann - und das lernt man im Laufe der Zeit, wenn man sich viel damit beschädtigt. Listenfeld ändern *:)*


    Listenfeld ändern GrußformelListenfeld ändern Beverly's Excel - Inn
     
Thema:

Listenfeld ändern

Die Seite wird geladen...
  1. Listenfeld ändern - Similar Threads - Listenfeld ändern

  2. Listenfeld im Endlosformular

    in Microsoft Access Hilfe
    Listenfeld im Endlosformular: Hallo in die Runde! Ich stehe gerade furchtbar auf dem Schlauch und hoffe, ihr könnt mir helfen: Problemkind ist eine Art Zimmerverwaltung: - jedes Zimmer hat eine ID und ist einem Objekt...
  3. Listenfeld aus Textfeld heraus füllen

    in Microsoft Access Hilfe
    Listenfeld aus Textfeld heraus füllen: Hallo Ich möchte gern mittels einem Listenfeld auf eine Auswahl an "Texten" (Text Bausteine) die sich oft widerholen zugreifen können und diese in ein MEMO Feld im Formular einfügen. Das klappt...
  4. Kombinationsfelder und Listeneinträge

    in Microsoft Access Hilfe
    Kombinationsfelder und Listeneinträge: Hallo in die Runde, ich fange gerade an, Access zu erforschen und möchte eine Art digitalen Aktenschrank erstellen. Folgenden Workflow möchte ich erreichen: 1. im Kombinationsfeld wird ein...
  5. Daten aus Listenfeld in Textfeld übergeben

    in Microsoft Access Hilfe
    Daten aus Listenfeld in Textfeld übergeben: Hallo Ich habe ein (Hauptformular Tabelle1) und (Abfrage Tabelle2) mit Daten in dem Hauptformular habe ich eine Listenfeld mit der (Tabelle2 Abfrage) Wenn ich im Listenfeld eine Zeile anklicke...
  6. Schriftgröße im Listenfeld ändern

    in Microsoft Excel Hilfe
    Schriftgröße im Listenfeld ändern: Hallo Zusammen! Es handelt sich um ein Formular-Listenfeld! Danke euch! 198345
  7. Listenfeld dynamisch ändern

    in Microsoft Access Hilfe
    Listenfeld dynamisch ändern: Ich hab ein Listenfeld und wollte fragen, ob ich es so machen kann: Ich hab im Listenfeld "Bearbeiter" und wollte auf das Formular ein Textfeld machen, welches mir dann nur die DS des...
  8. Listenfeld Datensatzherkunft ändern?

    in Microsoft Access Hilfe
    Listenfeld Datensatzherkunft ändern?: Hi, mit welcher eigenschaft des listenfeldes in vba kann ich die datensatzherkunft ändern? Will nämlich per knopfdruck eine andere abfrage in das listenfeld einlesen.... 96534
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden