Daten ändern bzw. löschen über UserBox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox TextBox
Bild

Betrifft: Daten ändern bzw. löschen über UserBox von: Heinz
Geschrieben am: 09.03.2005 17:02:59

Hallo,

das Ding bringt mich noch um den Verstand. ;-)

Ich habe eine Tabelle.
Die enthaltenen Daten werden mittels Userbox eingelesen:

lr = Worksheets("Komplett").Cells(Rows.Count, 1).End(xlUp).Row Me.ComboBox1.RowSource = "Komplett!d4:e" & lr
Me.ComboBox1.ListIndex = 0

Die eingelesenen Daten werden, nachdem ein Wert ijn der ComboBox ausgewählt wurde, in mehreren Textboxen angezeigt:


Private Sub ComboBox1_Change()
TextBox1 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 4)
TextBox2 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 3)
usw.
End Sub


Nun möchte ich über die Textboxen Änderungen vornehmen. Diese sollen dann mit einem Button wieder in die Tabelle zurückgeschrieben werden:

Private Sub cmdDatenübernehmen1_Click()
z = 1
Do While Cells(z, 4) <> ""
z = z + 1
Loop
Cells(z, 4) = Me.TextBox1
Cells(z, 1) = Me.TextBox2
usw.
End Sub


Über die obige Variante hängt Excl mir das ans Ende der Tabelle an. Das will ich aber nicht.

Wenn ich nun die folgende Variante wähle ändert mir Excel nichts, weder wird am Ende angehängt, noch in der aktuellen Zeile etwas verändert. Wobei Textbox1 ist der gleiche Inhalt wie in Combobox1.

Cells(ComboBox1.ListIndex + 4, 4) = Me.TextBox1
Cells(ComboBox1.ListIndex + 4, 3) = Me.TextBox2
usw.

Nehme ich die erste Zeile weg, also die mit der Textbox1, dann schreibt Excel die Daten genau dahin wo sie hinsollen, nämlich in die zu ändernde Zeile.
Allerdings kommt es auch vor das die Daten welche in der Textbox1 stehen geändert werden müssen. Und daher kann ich diese TextBox nicht einfach entfallen lassen.

usw. steht nur als Platzhalter hier, es gibt halt noch mehr Textboxen.



Dann habe ich noch das Problem das ich ein Zeile löschen möchte.
Und zwar auch wieder über die ComboBoxauswahl.
Also wenn ich einen Wert in der Combobox ausgewählt habe soll diese Zeile in der Tabelle gelöscht werden, nicht die Zeile entfernen weil ich die noch brauche wegen der Datenbankgröße. Wenn da jemand ne Idee hat bitte gleich mit schreiben ;-)

Ich hoffe ihr könnt mir helfen.

Gruß

Heinz

Bild


Betrifft: AW: Daten ändern bzw. löschen über UserBox von: harry
Geschrieben am: 09.03.2005 18:24:40

hi,
zum ersten teil deiner frage:
Private Sub cmdDatenübernehmen1_Click()
z = 1
Do While Cells(z, 4) <> ""
z = z + 1
Cells(z, 4) = Me.TextBox1
Cells(z, 1) = Me.TextBox2
Loop
End Sub

dort, wo dein loop steht wird nur z hochgezählt und dann logischerweise am ende der tabelle ein wert eingetragen.

prinzipiell solltest du das ganze aber mit einer schleife lösen, so in der art:

for i= 1 to me.controls.count
if controls(i).name = "TextBox" & i then
TEXT IN ZELLE EINTRAGEN
end if
next

liebe grüße,
harry


Bild


Betrifft: AW: Daten ändern bzw. löschen über UserBox von: Heinz
Geschrieben am: 09.03.2005 19:29:54

Hallo Harry,

danke für Deinen Hinweis.
Mit Deiner Lösung der Schleife komme ich irgendwie nicht klar.

Ich habe zwischenzeitlich noch mal probiert.
Wenn ich meine "erste Zeile" ans Ende der Liste mit den Textboxen stelle kann ich in allen Zellen etwas ändern und das wird dann auch fast alles übernommen.
Was nicht geht ist die Textbox welche den Inhalt hat der für die ComboBoxauswahl
benutzt wird (also textbox1). Das wird schön ignoriert.
Hier mal komplett:

Private Sub UserForm_Initialize()
Dim lr%
'Einlesen der Daten in die Combobox
lr = Worksheets("Komplett").Cells(Rows.Count, 1).End(xlUp).Row
Me.ComboBox1.RowSource = "Komplett!d4:e" & lr
Me.ComboBox1.ListIndex = 0
End Sub


Private Sub ComboBox1_Change()
'Einlesen der Daten in die Textboxen nach Auswahl der Combobox
TextBox1 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 4)  ' Materialnummer
TextBox2 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 3)  ' Artikel
TextBox3 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 8)  ' Hersteller
TextBox4 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 9) ' Bezeichnung
TextBox5 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 10) ' Kommentar
TextBox6 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 5) ' Lagerort
TextBox7 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 6) ' Regal
TextBox8 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 7) ' Fach
TextBox9 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 15) ' Bestand
TextBox10 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 13) ' Min
TextBox11 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 14) ' Max
TextBox15 = Worksheets("Komplett").Cells(ComboBox1.ListIndex + 4, 17) ' Einzelpreis
End Sub


Private Sub cmdDatenübernehmen1_Click()
'Daten in der Kompletttabelle ändern
Sheets("Komplett").Select
Cells(ComboBox1.ListIndex + 4, 3) = Me.TextBox2   'Artikelname
Cells(ComboBox1.ListIndex + 4, 8) = Me.TextBox3   'Hersteller
Cells(ComboBox1.ListIndex + 4, 9) = Me.TextBox4   'Bezeichnung
Cells(ComboBox1.ListIndex + 4, 10) = Me.TextBox5  'Kommentar
Cells(ComboBox1.ListIndex + 4, 5) = Me.TextBox6  'Lagerort
Cells(ComboBox1.ListIndex + 4, 6) = Me.TextBox7  'Regal
Cells(ComboBox1.ListIndex + 4, 7) = Me.TextBox8  'Fach
Cells(ComboBox1.ListIndex + 4, 15) = Val(Me.TextBox9)  'Bestand
Cells(ComboBox1.ListIndex + 4, 13) = Val(Me.TextBox10)  'Min
Cells(ComboBox1.ListIndex + 4, 14) = Val(Me.TextBox11)  'Max
Cells(ComboBox1.ListIndex + 4, 17) = Val(Me.TextBox15)  'Einzelpreis
Cells(ComboBox1.ListIndex + 4, 4) = Me.TextBox1 ' Materialnummer
UserForm_Initialize
Sheets("Main").Select
End Sub


UserForm_Initialize ist wohl klar.
Wenn nun die ComboBox geändert wird, sprich ein Wert ausgesucht wird,
werden die zugehörigen Daten in die verschiedenen Textboxen geladen.
Nun kann ich die Daten in den Textboxen bei Bedarf editieren.
Mit einem Button sollen die Daten zurückgeschrieben werden.
Und genau hier kommt der Fehler.
Die Textbox1 wird einfach nicht zurückgeschrieben.

Gruß
Heinz


Bild


Betrifft: AW: Daten ändern bzw. löschen über UserBox von: Heinz
Geschrieben am: 09.03.2005 19:57:10

Hi,

habe noch mal durchprobiert.
Auch in der geänderten Anordnung funzt nicht alles.
Bis zur Textbox6 schreibt er alles.
Ab Textox 7 schreibt er nicht mehr zurück.
Ich bin langsam mit meinem Latein am Ende.
Ich raff es nicht.

Gruß
Heinz


Bild


Betrifft: AW: Daten ändern bzw. löschen über UserBox von: Kemmann
Geschrieben am: 11.03.2005 12:13:33

Ich hoffe damit kommst Du klar?!

Ein bißchen was anderes aber bei mir klappt es!

Schönes Wochenende

Gruß

Rallemann






Private Sub cmdÄndern_Click()
'Datensatz ändern
Dim lng As Long
Dim i As Integer
On Error Resume Next
lng = UserForm1.ListBox1.Column(5)
Sheets("Daten").Activate
With UserForm1
    Cells(lng, 1).Value = .TextBox1.Value
    Cells(lng, 2).Value = .TextBox2.Value
    Cells(lng, 3).Value = .TextBox3.Value
    Cells(lng, 4).Value = .TextBox4.Value
    Cells(lng, 5).Value = .TextBox5.Value usw. dann kommt
'ListBox aktualisieren
    i = .ListBox1.ListIndex
        .ListBox1.Column(0, i) = .TextBox1.Value
        .ListBox1.Column(1, i) = .TextBox2.Value
        .ListBox1.Column(2, i) = .TextBox3.Value
        .ListBox1.Column(3, i) = .TextBox3.Value
        .ListBox1.Column(4, i) = .TextBox4.Value
        .ListBox1.Column(5, i) = .TextBox5.Value usw
    End With
End Sub



Private Sub cmdLöschen_Click()
' Datensatz löschen
Dim lng As Long
On Error Resume Next
Sheets("Daten").Activate
lng = UserForm1.ListBox1.Column(5)
Sheets("Daten").Cells(UserForm1.ListBox1.Column(5), 1).EntireRow.Delete FelderLöschen
    
End Sub



Bild


Betrifft: AW: Daten ändern bzw. löschen über UserBox von: Heinz
Geschrieben am: 09.03.2005 19:09:47

Hallo Forum,

das mit dem löschen hab ich im Griff.
Habe nur die Zelle aus der Comboboxsuche ans Ende der zu löschenden Zellen gestellt, dann ging es.

Gruß

Heinz


 Bild

Beiträge aus den Excel-Beispielen zum Thema "tabellen "