Tabelle aus UserForm bearbeiten

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Sam85.

    Tabelle aus UserForm bearbeiten

    Hallo,

    ich habe eine Rückfrage:

    Bei diesem Code wird eine Tabelle über die UserForm bearbeitet und es klappt "relativ" gut. Nur wenn in der ersten Spalte nichts steht dann wird scheinbar an allen Positionen außer der ersten Row, das ausgewählte Element "verschoben" bzw. an erste Stelle ersetzt. Ich kann es mir nicht wirklich erklären. Daher meine Frage, ist die Methode die ich verwende nicht ideal und wie kann es ich besser machen? Freue mich über Feedback. Datei anbei. :D

    UserForm, frmRaum, Zeile 110.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub btn_save_Click()
    2. fn = Replace(Me.Name, "frm", "")
    3. Set c = Controls("lb_" & fn)
    4. Set wks = ThisWorkbook.Worksheets(fn)
    5. Set tbl = wks.ListObjects("dt_" & fn)
    6. With wks
    7. If c.ListIndex = -1 Then
    8. MsgBox ("Es wurde kein Raum zum Aendern ausgewaehlt."), vbExclamation
    9. Else
    10. bzeile = .Columns(1).Find(c.List(c.ListIndex, 0), , xlValues).Row
    11. .Cells(bzeile, 1) = tb_00.Text
    12. .Cells(bzeile, 2) = tb_01.Text
    13. End If
    14. End With
    15. With c
    16. .Clear
    17. .List = tbl.DataBodyRange.Value
    18. End With
    19. tb_00.SetFocus
    20. End Sub

    Bilder
    • Tabelle vorher.PNG

      4,13 kB, 412×172, 125 mal angesehen
    • Tabelle nachher.PNG

      4,17 kB, 410×167, 140 mal angesehen
    • UserForm vorher.PNG

      7 kB, 406×340, 110 mal angesehen
    • UserForm 1 Row.PNG

      7,03 kB, 406×340, 214 mal angesehen
    • UserForm 5 Row.PNG

      7,26 kB, 406×340, 316 mal angesehen
    • UserForm 5 Row nach Save.PNG

      7,1 kB, 406×340, 126 mal angesehen
    Dateien
    • 2017 - upload.zip

      (202,27 kB, 152 mal heruntergeladen, zuletzt: )
    Da in der Zeile bzeile = .Columns(1).Find(c.List(c.ListIndex, 0), , xlValues).Row für bzeile immer 2 raus kommt, ist der Fehler gefunden. Warum da immer 2 rauskommt, kannst Du bestimmt selber rausfinden. Ich bin gerade auf'n Sprung und blick auf Anhieb nicht die Funktionalität, u.a. weil bei mir für c.List(c.ListIndex, 0) immer ein Leerstring ("") rauskommt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ok ich hab es so abgeändert und es läuft :)

    VB.NET-Quellcode

    1. Private Sub btn_save_Click()
    2. fn = Replace(Me.Name, "frm", "")
    3. Set c = Me.Controls("lb_table")
    4. Set wks = ThisWorkbook.Worksheets(fn)
    5. Set tbl = wks.ListObjects("dt_" & fn)
    6. i = c.ListIndex + 2
    7. With wks
    8. If c.ListIndex = -1 Then
    9. MsgBox ("Es wurde kein Raum zum Aendern ausgewaehlt."), vbExclamation
    10. Else
    11. .Cells(i, 1) = tb_01.Text
    12. .Cells(i, 2) = tb_02.Text
    13. End If
    14. End With
    15. With c
    16. .Clear
    17. .List = tbl.DataBodyRange.Value
    18. End With
    19. Me.tb_01.SetFocus
    20. End Sub