Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
936to940
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
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listbox, Daten ändern und zurückschreiben

Listbox, Daten ändern und zurückschreiben
22.12.2007 11:37:48
Gerhard
Hallo...
Hole in meine Listbox meine Daten mit folgendem Code:

Private Sub UserForm_initialize()
Dim wsTmp As Worksheet, lngZ As Long
Set wsTmp = Worksheets.Add 'später löschen, wenn nicht mehr gebraucht
ActiveSheet.Name = "Bestellen"
With Worksheets("BPF")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(1, 1).AutoFilter Field:=2, Criteria1:="BESTELLEN"
.Range(.Rows(1), .Rows(lngZ)).Copy wsTmp.Cells(1, 1)
End With
lngZ = Cells(Rows.Count, 1).End(xlUp).Row ' Anz. Zeilen in wsTmp
With ListBox1
.RowSource = wsTmp.Name & "!A2:AZ" & lngZ
.ColumnCount = 29
.ColumnHeads = True
End With
End Sub


Funktioniert...
Dann bringe ich die Daten via Klick in die Listbox auf den entsprechenden Datensatz in ein UF um diese zu ändern.
Jetzt möchte ich die Daten wieder zurückschreiben mit folgendem Code:


Private Sub cmdArtikelBestellt_Click()
Dim intZ As Integer
Dim durchsuchen, finden As Range
Set durchsuchen = Sheets("Bestellen").Range("A1:A" & _
Sheets("Bestellen").Range("A65536").End(xlUp).Row)
For Each finden In durchsuchen
If finden.Text = txtLfdNr.Text Then
intZ = finden.Row
Exit For
End If
Next finden
Cells(intZ, 1) = txtLfdNr
Cells(intZ, 2) = txtStatus
Cells(intZ, 3) = txtLieferant
Cells(intZ, 4) = txtLieferantennr
Cells(intZ, 5) = txtHersteller
Cells(intZ, 6) = txtArtikelbezeichnung
Cells(intZ, 7) = txtArtikelnummer
Cells(intZ, 8) = txtGröße
Cells(intZ, 9) = txtSystemnr
Cells(intZ, 10) = txtMenge
End Sub


Nur leider funktioniert das ned so wie ich will... Es wird mir immer der Datensatz auf das erste Sheet gebracht und nicht auf das Sheet "Bestellen" an entsprechender Stelle (Soll nach LfdNr schauen und diese Zeile finden und da abändern)
Was mache ich falsch?
Gruß Gerhard

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 11:49:23
Josef
Hallo Gerhard,
Cells() bezieht sich ohne angabe der Tabelle immer auf das aktive Tabellenblatt.
Ich würde es so lösen.
Private Sub cmdArtikelBestellt_Click()
Dim lngR As Long
Dim durchsuchen

With Sheets("Bestellen")
    
    Set durchsuchen = .Range("A:A").Find(What:=txtLfdNr.Text, LookAt:=xlWhole)
    
    If Not durchsuchen Is Nothing Then
        
        lngR = durchsuchen.Row
        
        '.Cells(lngR, 1) = txtLfdNr
        .Cells(lngR, 2) = txtStatus
        .Cells(lngR, 3) = txtLieferant
        .Cells(lngR, 4) = txtLieferantennr
        .Cells(lngR, 5) = txtHersteller
        .Cells(lngR, 6) = txtArtikelbezeichnung
        .Cells(lngR, 7) = txtArtikelnummer
        .Cells(lngR, 8) = txtGröße
        .Cells(lngR, 9) = txtSystemnr
        .Cells(lngR, 10) = txtMenge
        
    End If
    
End With

Set durchsuchen = Nothing
End Sub


Gruß Sepp

Anzeige
AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 11:55:34
Gerhard
Servus Sepp
Also zumindest spricht es jetzt schon mal die richtige Tabelle an...
Allerdings wird nur der
.Cells(lngR, 2) = txtStatus
verändert... alles andere bleibt beim alten...
?
Gruß Gerhard

AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 12:10:00
Josef
Hallo Gerhard,
das kommt wohl daher, weil die Tabelle die RowSource deiner Listbox ist und die Textboxen wiederum an die Listbox gekoppelt sind.
Wenn nun die RowSource sich ändert, dann werden die Textboxen wiederum mit den alten werdten der Listbox gefüllt.
Am besten du stellst mal eine Beispieldatei hier rein, dann werf ich mal einen Blick darauf.
Gruß Sepp

Anzeige
AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 12:08:00
Gerhard
Habe mal die Datei auf meinen eigenen Webspace hochgeldan, weil sie über 300kb hat...
Das Problem befindet sich in Userform4_Bestellen
http://www.topdog24-7.de/hochladen.xls
Gruß Gegga

AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 12:25:00
Josef
Hallo Gerhard,
das kannst du mit einer Variabel lössen die du nach bedarf auf True/False stellst, und damit das ungewollte auslösen des Change-Ereignisses der Listbox unterbindest.
' **********************************************************************
' Modul: UserForm4_Bestellen Typ: Userform
' **********************************************************************

Option Explicit
Private bAction As Boolean


Private Sub cmdArtikelBestellt_Click()
Dim lngR As Long
Dim durchsuchen

bAction = False
With Sheets("Bestellen")
    
    Set durchsuchen = .Range("A:A").Find(What:=txtLfdNr.Text, LookAt:=xlWhole)
    
    If Not durchsuchen Is Nothing Then
        
        lngR = durchsuchen.Row
        
        .Cells(lngR, 1) = txtLfdNr
        .Cells(lngR, 2) = txtStatus
        .Cells(lngR, 3) = txtLieferant
        .Cells(lngR, 4) = txtLieferantennr
        .Cells(lngR, 5) = txtHersteller
        .Cells(lngR, 6) = txtArtikelbezeichnung
        .Cells(lngR, 7) = txtArtikelnummer
        .Cells(lngR, 8) = txtGröße
        .Cells(lngR, 9) = txtSystemnr
        .Cells(lngR, 10) = txtMenge
        
    End If
    
End With
bAction = True
Set durchsuchen = Nothing
End Sub




Private Sub Frame3_Click()

End Sub

Private Sub OptionButton_Lieferbar_ja_Click()
txtLTDatum.Enabled = False
txtTM.Enabled = False
Label_Lieferbar_bis.Enabled = False
Label_lieferbar_Menge.Enabled = False

End Sub

Private Sub OptionButton_Lieferbar_nein_Click()
txtLTDatum.Enabled = True
txtTM.Enabled = False
Label_Lieferbar_bis.Enabled = True
Label_lieferbar_Menge.Enabled = False
End Sub

Private Sub OptionButton_Lieferbar_Teil_Click()
txtLTDatum.Enabled = False
txtTM.Enabled = True
Label_Lieferbar_bis.Enabled = False
Label_lieferbar_Menge.Enabled = True
End Sub

Private Sub txtArtikelbezeichnung_Change()

End Sub

Private Sub txtGewLiefertermin_Change()
UserForm4_Bestellen.Label4046.Caption = txtGewLiefertermin
End Sub

Private Sub txtEinheit_Change()
UserForm4_Bestellen.Label4043.Caption = txtEinheit
End Sub

Private Sub ListBox1_Change()

If Not bAction Then Exit Sub

If ListBox1.Tag <> "" Then Exit Sub
txtLfdNr = ListBox1.List(ListBox1.ListIndex, 0)

txtLieferant = ListBox1.List(ListBox1.ListIndex, 2)
txtLieferantennr = ListBox1.List(ListBox1.ListIndex, 3)
txtHersteller = ListBox1.List(ListBox1.ListIndex, 4)
txtArtikelbezeichnung = ListBox1.List(ListBox1.ListIndex, 5)
txtArtikelnummer = ListBox1.List(ListBox1.ListIndex, 6)
txtGröße = ListBox1.List(ListBox1.ListIndex, 7)
txtSystemnr = ListBox1.List(ListBox1.ListIndex, 8)
txtMenge = ListBox1.List(ListBox1.ListIndex, 9)
txtEinheit = ListBox1.List(ListBox1.ListIndex, 10)
txtStückVPE = ListBox1.List(ListBox1.ListIndex, 11)
txtPreis = ListBox1.List(ListBox1.ListIndex, 12)
txtDatum = Format(ListBox1.List(ListBox1.ListIndex, 13), "DD.MM.YYYY")
'Format(txtGewLiefertermin, "DD.MM.YYYY")
txtAngefordert = ListBox1.List(ListBox1.ListIndex, 14)
txtProjekt = ListBox1.List(ListBox1.ListIndex, 15)
txtGewLiefertermin = Format(ListBox1.List(ListBox1.ListIndex, 16), "DD.MM.YYYY")
txtEmpfänger = ListBox1.List(ListBox1.ListIndex, 17)
txtAngebotsdatum = Format(ListBox1.List(ListBox1.ListIndex, 18), "DD.MM.YYYY")
txtAngebotsnummer = ListBox1.List(ListBox1.ListIndex, 19)
txtAnsprechpartner = ListBox1.List(ListBox1.ListIndex, 20)
txtAngebotAngefordert = ListBox1.List(ListBox1.ListIndex, 21)
txtAnmerkung = ListBox1.List(ListBox1.ListIndex, 22)


End Sub


Private Sub txtLfdNr_Change()

End Sub

Private Sub UserForm_initialize()
bAction = True
Worksheets("BPF").Select
Selection.AutoFilter Field:=2, Criteria1:="BESTELLEN"

UserForm4_Bestellen.Label4043.Caption = txtEinheit

Worksheets("HILFSTABELLE").Select

txtBestellart = Sheets("HILFSTABELLE").Cells(2, 11)
txtBesteller = Sheets("HILFSTABELLE").Cells(2, 12)
txtInfraBestellnr = Sheets("HILFSTABELLE").Cells(2, 13)
txtPersBestellungName = Sheets("HILFSTABELLE").Cells(2, 14)


Dim wsTmp As Worksheet, lngZ As Long

Set wsTmp = Worksheets.Add 'später löschen, wenn nicht mehr gebraucht
ActiveSheet.Name = "Bestellen"

With Worksheets("BPF")
    lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Cells(1, 1).AutoFilter Field:=2, Criteria1:="BESTELLEN"
    .Range(.Rows(1), .Rows(lngZ)).Copy wsTmp.Cells(1, 1)
End With
lngZ = Cells(Rows.Count, 1).End(xlUp).Row ' Anz. Zeilen in wsTmp

With ListBox1
    .RowSource = wsTmp.Name & "!A2:AZ" & lngZ
    .ColumnCount = 29
    .ColumnHeads = True
End With

txtLTDatum.Enabled = False
txtTM.Enabled = False
Label_Lieferbar_bis.Enabled = False
Label_lieferbar_Menge.Enabled = False

Worksheets("ÜBERSICHT").Select




End Sub

Gruß Sepp

Anzeige
AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 12:41:00
Gerhard
Danke Sepp...
Allerdings bringt er nun ne Fehlermeldung bei
With ListBox1
.RowSource = wsTmp.Name & "!A2:AZ" & lngZ
.ColumnCount = 29
.ColumnHeads = True
Objekt erforderlich...
?

Hat sich erleditgt oT Danke Sepp!!!
22.12.2007 12:55:33
Gerhard
Ich muss von der Kiste weg :D
Ich kann nicht mal mehr richtig einfügen!!!
Funktioniert tadellos Sepp Danke nochmals!!!!
Schöne Feiertage!!
Gruß Gerhard

AW: Listbox, Daten ändern und zurückschreiben
22.12.2007 12:56:06
Josef
Hallo Gerhard,
ich hab an deinem Code sonst nichts verändert! Der Fehler muss also bei deiner Datei liegen.
Gruß Sepp

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige