Office: Zellen in Tabelle überschreiben!

Helfe beim Thema Zellen in Tabelle überschreiben! in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo liebe Foren Mitglieder, wünsche allen erst einmal alles gute noch im neuen Jahr *Smilie . Ich sitzte aktuell vor folgendem Problem und finde... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von herkules33, 4. Januar 2011.

  1. Zellen in Tabelle überschreiben!


    Hallo liebe Foren Mitglieder,

    wünsche allen erst einmal alles gute noch im neuen Jahr *Smilie .

    Ich sitzte aktuell vor folgendem Problem und finde kein Lösung. Auch die Suche im Forum hat mich noch nciht direkt weiter gebarcht. Ein Beitrag eines Mitgliedes "VBA - Zellen Überschreiben bei bestätigung in MsgBox" hilft mir hierbei nicht wirklich weiter, wobei ich denke das es evtl in diese Richtung gehen müsste.

    Aber nun zu meinem Problem: Ich schreibe über eine UserForm Daten in eine Tabelle (Code ist unten beigefügt). Dies funktioniert bestens. Teile der eingetragen Daten sind in einem Listfeld sichtbar und können über den EditierModus wieder in die Felder der UserForm geladen werden zur Weiterbearbeitung. Wenn jetzt Änderungen an Felder (Check Box, Text Feld, etc.) vornehme und die Daten wieder in die Tabelle schreibe werden diese nicht aktualisiert. Es bleiben weiterhin die erst abgelegten Daten in der Tabelle.

    Was muss ich ändern um das gewünschte Ergebnis zu erhalten????

    Über Eure Hilfe würde ich mich freuen.

    Grüße
    Michael

    Private Sub cmdDatenschreiben_Click()

    ' Schreibt die Daten aus der Beschwerde Erfassung in die Datentabelle

    Dim lngNeueReihe As Long
    Dim zaehlerneu As Double
    Dim I As Integer
    Dim lLetzte As Long
    Dim Clear As String
    Dim atage As Long


    If SpeichernJN = False Then
    MsgBox "Unvollständige Daten", vbCritical, "ACHTUNG"
    Exit Sub
    End If



    'Aktivieren & Neue Reihe berechnen
    Worksheets("Datentabelle").Activate
    lngNeueReihe = Range("E65536").End(xlUp).Row + 1
    If lngNeueReihe = 2 Then
    zaehlerneu = 1
    Else
    zaehlerneu = ActiveSheet.Cells(lngNeueReihe - 1, 1) + 1
    End If


    If Me.EditZeile 0 Then lngNeueReihe = Me.EditZeile


    'Werte eintragen

    If Me.EditZeile = 0 Then
    ActiveSheet.Cells(lngNeueReihe, 1).Value = zaehlerneu
    ActiveSheet.Cells(lngNeueReihe, 2).Value = Environ("userName")
    ActiveSheet.Cells(lngNeueReihe, 3).Value = Date
    ActiveSheet.Cells(lngNeueReihe, 4).Value = Time
    End If
    ActiveSheet.Cells(lngNeueReihe, 5).Value = Me.txtName.Value
    ActiveSheet.Cells(lngNeueReihe, 6).Value = Me.txtVorname.Value
    ActiveSheet.Cells(lngNeueReihe, 7).Value = Me.txtKdnr.Value
    ActiveSheet.Cells(lngNeueReihe, 8).Value = Me.cboBeschwf.Value
    ActiveSheet.Cells(lngNeueReihe, 9).Value = Me.cboProdukt.Value
    ActiveSheet.Cells(lngNeueReihe, 10).Value = Me.cboKat.Value
    ActiveSheet.Cells(lngNeueReihe, 11).Value = Me.cboAnl.Value
    ActiveSheet.Cells(lngNeueReihe, 12).Value = Me.txtBeschr.Value
    ActiveSheet.Cells(lngNeueReihe, 14).Value = Me.txtRegsofort.Value
    ActiveSheet.Cells(lngNeueReihe, 16).Value = Me.txtReg8AT.Value
    'ActiveSheet.Cells(lngNeueReihe, 18).Value = Me.txtErstat.Value
    'ActiveSheet.Cells(lngNeueReihe, 20).Value = Me.txtKulanz.Value
    'ActiveSheet.Cells(lngNeueReihe, 22).Value = Me.txtGesch.Value
    ActiveSheet.Cells(lngNeueReihe, 30).Value = Environ("userName")
    ActiveSheet.Cells(lngNeueReihe, 31).Value = Date
    ActiveSheet.Cells(lngNeueReihe, 32).Value = Time

    'Berechnet die Durchlaufzeit

    atage = Werksarbeitstage(ActiveSheet.Cells(lngNeueReihe, 3).Value, Date, Worksheets("Feiertage").Range("E1:E12"))

    ActiveSheet.Cells(lngNeueReihe, 29).Value = atage

    'Gibt die Werte in die jeweiligen Felder zurück

    If Me.chkErst.Value = True Then
    ActiveSheet.Cells(lngNeueReihe, 17).Value = True
    ActiveSheet.Cells(lngNeueReihe, 18).Value = Me.txtErstat.Value
    Else
    Me.chkErst.Value = False
    ActiveSheet.Cells(lngNeueReihe, 17).Value = False
    ActiveSheet.Cells(lngNeueReihe, 18).Value = ""
    End If

    If Me.chkKul.Value = True Then
    ActiveSheet.Cells(lngNeueReihe, 19).Value = True
    ActiveSheet.Cells(lngNeueReihe, 20).Value = Me.txtKulanz.Value
    Else
    Me.chkKul.Value = False
    ActiveSheet.Cells(lngNeueReihe, 19).Value = False
    ActiveSheet.Cells(lngNeueReihe, 20).Value = ""
    End If

    If Me.chkGesch.Value = True Then
    ActiveSheet.Cells(lngNeueReihe, 21).Value = True
    ActiveSheet.Cells(lngNeueReihe, 22).Value = Me.txtGesch.Value
    Else
    Me.chkGesch.Value = False
    ActiveSheet.Cells(lngNeueReihe, 21).Value = False
    ActiveSheet.Cells(lngNeueReihe, 22).Value = ""
    End If

    If Me.chkEndschSchrb.Value = True Then
    ActiveSheet.Cells(lngNeueReihe, 23).Value = True
    ActiveSheet.Cells(lngNeueReihe, 24).Value = Me.txtEntscheidat.Value
    Else
    Me.chkEndschSchrb.Value = False
    ActiveSheet.Cells(lngNeueReihe, 23).Value = False
    ActiveSheet.Cells(lngNeueReihe, 24).Value = ""
    End If

    'Gibt den Wert JA oder NEIN in Feld "Beschwerde berechtigt/unberechtigt?" der Datentabelle zurück!
    If Me.optBeschwerdeberechtigtJa Then
    ActiveSheet.Cells(lngNeueReihe, 25).Value = "Ja"
    ElseIf Me.optBeschwerdeberechtigtNein Then
    ActiveSheet.Cells(lngNeueReihe, 25).Value = "Nein"
    Else
    ActiveSheet.Cells(lngNeueReihe, 25).Value = ""
    End If

    'Gibt den Wert JA oder NEIN in Feld "Beschwerde abschließend geklärt?" der Datentabelle zurück!
    If Me.optBeschwGeklJa Then
    ActiveSheet.Cells(lngNeueReihe, 26).Value = "Ja"
    ActiveSheet.Cells(lngNeueReihe, 28).Value = "abgeschlossen"
    Else
    ActiveSheet.Cells(lngNeueReihe, 26).Value = "Nein"
    ActiveSheet.Cells(lngNeueReihe, 28).Value = "offen"
    End If

    'Gibt den Wert DCKB oder DL-Finance in Feld "Wenn nein, weitere Bearbeitung durch DCKB oder DL" der Datentabelle zurück!
    If Me.optDCKB.Value = True Then
    Me.frmWeitereBearb.Visible = True
    ActiveSheet.Cells(lngNeueReihe, 27).Value = "DCKB"
    ElseIf Me.optDLFinance.Value = True Then
    Me.frmWeitereBearb.Visible = True
    ActiveSheet.Cells(lngNeueReihe, 27).Value = "DL-Finance"
    Else
    Me.frmWeitereBearb.Visible = False
    ActiveSheet.Cells(lngNeueReihe, 27).Value = " "
    End If

    ' If Me.chkEndschSchrb.Value = True Then
    ' ActiveSheet.Cells(lngNeueReihe, 23).Value = True
    ' Else
    ' Me.chkEndschSchrb.Value = False
    ' ActiveSheet.Cells(lngNeueReihe, 23).Value = False
    ' End If

    If Me.optRegsofort.Value = True Then
    ActiveSheet.Cells(lngNeueReihe, 13).Value = True
    Else
    Me.optRegsofort.Value = False
    ActiveSheet.Cells(lngNeueReihe, 13).Value = False
    End If

    If Me.optReg8AT.Value = True Then
    ActiveSheet.Cells(lngNeueReihe, 15).Value = True
    Else
    Me.optReg8AT.Value = False
    ActiveSheet.Cells(lngNeueReihe, 15).Value = False
    End If

    ' If Me.chkErst.Value = True Then
    ' ActiveSheet.Cells(lngNeueReihe, 17).Value = True
    ' Else
    ' Me.chkErst.Value = False
    ' ActiveSheet.Cells(lngNeueReihe, 17).Value = False
    ' End If

    ' If Me.chkKul.Value = True Then
    ' ActiveSheet.Cells(lngNeueReihe, 19).Value = True
    ' Else
    ' Me.chkKul.Value = False
    ' ActiveSheet.Cells(lngNeueReihe, 19).Value = False
    ' End If

    ' If Me.chkGesch.Value = True Then
    ' ActiveSheet.Cells(lngNeueReihe, 21).Value = True
    ' Else
    ' Me.chkGesch.Value = False
    ' ActiveSheet.Cells(lngNeueReihe, 21).Value = False
    ' End If

    'Gibt nach demabspeichern des Datensatzes die neue Nr. in der ListBox "lstlfdnr" an

    lstlfdnr.Value = Clear

    lLetzte = Worksheets("Datentabelle").Cells(Rows.Count, 1).End(xlUp).Row
    With lstlfdnr
    .ColumnCount = 6
    .ColumnWidths = "1cm;0cm;0cm;0cm;2cm;2cm"
    .ColumnHeads = True
    lstlfdnr.RowSource = "Datentabelle!A2:F" & lLetzte
    End With
    lstlfdnr.ListIndex = -1

    If Me.EditZeile 0 Then
    MsgBox "Änderungen wurde " & (lngNeueReihe - 1) & " gespeichert!", , ""
    Else
    Me.EditZeile = 0
    MsgBox "Beschwerde wurde unter der Nummer " & zaehlerneu & " gespeichert!", , ""
    End If

    ActiveWorkbook.Save

    AllesLeeren


    End Sub

    :)
     
    herkules33, 4. Januar 2011
    #1
  2. Hi herkules33,

    wenn Du ändern willst, hat Me.EditZeile einen Wert 0, die Daten werden aber nur bei Me.EditZeile =0 geschrieben.

    Eventuell das If Me.EditZeile = 0 Then weglassen?


    Code:
     
    gklumpp, 6. Januar 2011
    #2
  3. Hallo Gerhard,

    Danke für den Tipp, der ist schon mal nicht schlecht. Allerdings stellt sich mir eine Frage.
    Wenn ich If Me.EditZeile = 0 Then weglasse schreibt er doch bestimmt jedesmal einen neuen Datensatz oder. Das darf jedoch nicht sein. Bei Datensätzen die schon vorhanden sind, jedoch nur Änderungen vorgenommen werden.

    Gruß
    Michael
     
    herkules33, 6. Januar 2011
    #3
  4. Zellen in Tabelle überschreiben!

    Hi Michael,

    hast recht, kannst Du das Excel hier reinstellen?
     
    gklumpp, 6. Januar 2011
    #4
  5. Hallo Gerhard,

    im Anhang findest Du die Datei. Mir geht es erst einmal um die Daten für die Checkbox "Erfassung".

    Grüße
    Michael
     
    herkules33, 6. Januar 2011
    #5
  6. Hi herkules33,

    so wie es aussieht, wurde "lngNeueReihe" nicht auf die Zeile der Änderung gesetzt.

    in Private Sub cmdDatenschreiben_Click():
    Code:
     
    gklumpp, 6. Januar 2011
    #6
  7. Hallo Gerhard,

    ich hab Deinen Vorschlag mal eingebaut. Ist leider nicht des Rätzels Lösung. Mit

    If Me.EditZeile 0 Then
    lngNeueReihe = Me.EditZeile
    ...

    Passieren tut nun folgendes:
    Es wird der alte Zähler überschrieben! Die Daten ab Spalte "H" in der Datentabelle die sich möglicherweise änder können bleibe jedoch weiterhin stehen. Diese Aktualierung greift nicht.

    Ich hab gerade keine Idee an welcher Stellschraube ich hier drehen muss das es geht?????*frown.gif*
    Gruß
    Michael
     
    herkules33, 6. Januar 2011
    #7
  8. Zellen in Tabelle überschreiben!

    Hi Michael,

    ok, dann gehen wir mal weiter

    Code:
    Prüfs mal bitte.
     
    gklumpp, 7. Januar 2011
    #8
  9. Hallo Gerhard,

    danke für die Info hab es erst heute gesehen! Komme allerdings mit dem letzten Teil Deines Code nicht ganz klar.
    Das ist mein Teil jetzt:

    Private Sub lstlfdnr_Change()

    ThisWorkbook.Worksheets("Datentabelle").Activate

    Me.EditZeile = lstlfdnr.ListIndex + 2
    Me.Modus = "EDIT-Modus"


    txtName = Cells(lstlfdnr.ListIndex + 2, 5)
    txtVorname = Cells(lstlfdnr.ListIndex + 2, 6)
    txtKdnr = Cells(lstlfdnr.ListIndex + 2, 7)
    cboBeschwf = Cells(lstlfdnr.ListIndex + 2, 8)
    cboProdukt = Cells(lstlfdnr.ListIndex + 2, 9)
    cboKat = Cells(lstlfdnr.ListIndex + 2, 10)
    cboAnl = Cells(lstlfdnr.ListIndex + 2, 11)
    txtBeschr = Cells(lstlfdnr.ListIndex + 2, 12)
    txtRegsofort = Cells(lstlfdnr.ListIndex + 2, 14)
    txtReg8AT = Cells(lstlfdnr.ListIndex + 2, 16)
    txtErstat = Cells(lstlfdnr.ListIndex + 2, 18)
    txtKulanz = Cells(lstlfdnr.ListIndex + 2, 20)
    txtGesch = Cells(lstlfdnr.ListIndex + 2, 22)
    txtEntscheidat = Cells(lstlfdnr.ListIndex + 2, 24)
    'oben OK

    If IsEmpty(Cells(lstlfdnr.ListIndex + 2, 13)) Then
    optRegsofort = False
    optReg8AT = False
    Else
    optRegsofort = Cells(lstlfdnr.ListIndex + 2, 13)
    optReg8AT = Cells(lstlfdnr.ListIndex + 2, 15)
    End If
    optRegsofort_Click

    If IsEmpty(Cells(lstlfdnr.ListIndex + 2, 17)) Then
    chkErst = False
    chkKul = False
    chkGesch = False
    Else
    chkErst = Cells(lstlfdnr.ListIndex + 2, 17)
    chkKul = Cells(lstlfdnr.ListIndex + 2, 19)
    chkGesch = Cells(lstlfdnr.ListIndex + 2, 21)
    End If

    If Me.chkErst = False And Me.chkKul = False Then
    Me.frmBetrag.Visible = False
    Else
    Me.frmBetrag.Visible = True
    End If

    If Me.chkGesch = False Then
    Me.frmGeschenk.Visible = False
    Else
    Me.frmGeschenk.Visible = True
    End If


    If IsEmpty(Cells(lstlfdnr.ListIndex + 2, 23)) Then
    chkEndschSchrb = False
    Else
    chkEndschSchrb = Cells(lstlfdnr.ListIndex + 2, 23)
    End If

    Me.txtEntscheidat = Cells(lstlfdnr.ListIndex + 2, 24)

    If IsEmpty(Cells(lstlfdnr.ListIndex + 2, 25)) Then
    optBeschwerdeberechtigtJa = False
    optBeschwerdeberechtigtNein = False
    ElseIf Cells(lstlfdnr.ListIndex + 2, 25) = "Ja" Then
    optBeschwerdeberechtigtJa = True
    optBeschwerdeberechtigtNein = False
    ElseIf Cells(lstlfdnr.ListIndex + 2, 25) = "Nein" Then
    optBeschwerdeberechtigtJa = False
    optBeschwerdeberechtigtNein = True
    End If

    If IsEmpty(Cells(lstlfdnr.ListIndex + 2, 26)) Then
    optBeschwGeklJa = False
    optBeschwGeklNein = False
    frmWeitereBearb.Visible = False
    ElseIf Cells(lstlfdnr.ListIndex + 2, 26) = "Ja" Then
    optBeschwGeklJa = True
    optBeschwGeklNein = False
    optDCKB = False
    optDLFinance = False
    frmWeitereBearb.Visible = False
    ElseIf Cells(lstlfdnr.ListIndex + 2, 26) = "Nein" Then
    optBeschwGeklJa = False
    optBeschwGeklNein = True
    frmWeitereBearb.Visible = True
    End If

    If Me.optBeschwGeklJa = False And Me.optBeschwGeklNein = False Then
    Me.frmWeitereBearb.Visible = False
    End If

    If IsEmpty(Cells(lstlfdnr.ListIndex + 2, 27)) Then
    optDCKB = False
    optDLFinance = False
    frmWeitereBearb.Visible = False
    ElseIf Cells(lstlfdnr.ListIndex + 2, 27) = "DCKB" Then
    optDCKB = True
    optDLFinance = False
    frmWeitereBearb.Visible = True
    ElseIf Cells(lstlfdnr.ListIndex + 2, 27) = "DL-Finance" Then
    optDCKB = False
    optDLFinance = True
    frmWeitereBearb.Visible = True
    End If

    End Sub

    Heißt das das fett markierte kann ich aus klammern?? Warum dann aber doppelt End If???

    Wäre nett wenn Du mir das noch erläutern könntest.

    Danke & Gruß Michael
     
    herkules33, 10. Januar 2011
    #9
  10. Hi Michael,

    Du klickst zum Editieren von einem Datensatz im Fenster "Vorgänge" einen datensatz an. Dieses Fenster heisst "lstlfdnr", mit dem Auswählen eines Datensatzes startet automatisch "lstlfdnr_Change" und füllt Dir die Textboxen mit den Daten. Mit "Me.Modus = "EDIT-Modus" " steht jetzt auch EDIT-Modus in der Userform.
    Jetzt änderst Du zB den Vornamen und klickst "Daten in Tabelle schreiben". "cmdDatenschreiben_Click" schreibt jetzt die geänderten daten in die Tabelle. Und genau deshalb wird wieder "lstlfdnr_Change" aufgerufen und füllt Deine Textboxen erneut mit den alten Werten aus der Tabelle, und überschreibt die Änderung in den Textboxen, bevor die Änderung in die Tabelle geschrieben wird.

    Deshalb muss "lstlfdnr_Change" gestoppt werden, wenn Du bereits im Edit-Modus bist und die Änderungen schreiben willst. Der Stopp ist die neue IF gleich am Anfang der Sub:
    "If Me.Modus "EDIT-Modus" Then 'GK"
    und deshalb natürlich am Ende der Sub noch ein "Endif". Denn Du willst jetzt ja in die tabelleschreiben, und nicht noch einmal die Textboxen mit den alten Werten befüllen.

    Bei "AllesLeeren" wird noch in der Userform der "EDIT-Modus" auf Null gesetzt, weil jetzt der Editiervorgang ja beendet ist.
     
    gklumpp, 10. Januar 2011
    #10
  11. Hallo Gerhard,

    danke für die kurze Erläuterung *Smilie . Heute Morgen hab auch ich es dann kapiert. Funktioniert genau so wie ich es haben wollte.

    Nochmal vielen Dank für Deine Unterstützung.

    Beste Grüße
    Michael
     
    herkules33, 10. Januar 2011
    #11
Thema:

Zellen in Tabelle überschreiben!

Die Seite wird geladen...
  1. Zellen in Tabelle überschreiben! - Similar Threads - Zellen Tabelle überschreiben

  2. Zellen Markieren, die in einer anderen Tabelle vorkommen

    in Microsoft Excel Hilfe
    Zellen Markieren, die in einer anderen Tabelle vorkommen: Hallo, Die Sache betrifft dieses Mal meine Frau. Sie haben auf Arbeit eine große Excel-Tabelle mit vielen Daten. Nun hat man wohl zwei Gruppen (und Tabellen) zusammengeführt und die Zeilen, die...
  3. Zellen sperren innerhalb einer Tabelle

    in Microsoft Excel Hilfe
    Zellen sperren innerhalb einer Tabelle: Ich habe eine 3-spaltige Tabelle wo nur in einer Zelle je Zeile etwas eingetragen werden kann. siehe Datei Danke für die schnelle Hilfe mfkathie
  4. Leerzellen in Excel-Tabellen nachträglich mit Inhalten darüberliegender Zellen ausfüllen

    in Microsoft Excel Hilfe
    Leerzellen in Excel-Tabellen nachträglich mit Inhalten darüberliegender Zellen ausfüllen: Hallo Zusammen, folgende Situation würde ich gerne per Formel lösen und nicht über Inhalte Leerzellen. In Spalte A steht folgendes. [ATTACH] Ich möchte jetzt gerne, dass in der Spalte A2:A4 die...
  5. Hyperlink in bestimmte Zelle in Tabelle

    in Microsoft Excel Hilfe
    Hyperlink in bestimmte Zelle in Tabelle: Hallo, wie ich im Titel schon schrieb, möchte ich gerne einen Hyperlink in eine TABELLE erstellen, der auf eine bestimmte ZELLE in der Tabelle hinweist. Also z.B. 6 Zeile in Spalte Namen in der...
  6. Zeilenhöhe in Pivot-Tabelle nach Aktualisierung beibehalten

    in Microsoft Excel Hilfe
    Zeilenhöhe in Pivot-Tabelle nach Aktualisierung beibehalten: Hallo zusammen, ich habe ein recht allgemeines Problem bei der Darstellung einer Pivot-Tabelle, wo ich mittlerweile nicht weiterkomme. Ich habe die gesamten Zeilen einer Arbeitsmappe im Bereich...
  7. VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen

    in Microsoft Excel Hilfe
    VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen: Hallo liebe Excel-Kommunity, nach ewigen Stunden des Suchens und Rumprobierens bin ich an dem Punkt angekommen an dem ich verzweifelt um eure Hilfe fragen muss. Da ich leider keinerlei...
  8. Tabelle: Zelle einfügen. Sprung an Anfang nächster Zeile

    in Microsoft Word Hilfe
    Tabelle: Zelle einfügen. Sprung an Anfang nächster Zeile: Guten Tabe liebe Office Freunde :) Ich erstelle aktuell eine bebilderte Personalliste mit Bildern für meinen Arbeitgeber per Word. Die Erstellung ist kein Problem, jedoch haben wir uns gefragt...
  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