Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
580to584
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten ändern bzw. löschen über UserBox

Daten ändern bzw. löschen über UserBox
09.03.2005 17:02:59
Heinz
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten ändern bzw. löschen über UserBox
09.03.2005 18:24:40
harry
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
Anzeige
AW: Daten ändern bzw. löschen über UserBox
09.03.2005 19:29:54
Heinz
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
Anzeige
AW: Daten ändern bzw. löschen über UserBox
09.03.2005 19:57:10
Heinz
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
AW: Daten ändern bzw. löschen über UserBox
11.03.2005 12:13:33
Kemmann
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

Anzeige
AW: Daten ändern bzw. löschen über UserBox
09.03.2005 19:09:47
Heinz
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige