Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
Inhaltsverzeichnis

Listbox Fehler ??

Listbox Fehler ?
Fatih
Hallo Ihr Lieben,
endlich kann ich diese "Fehlerhafte Datei" hochladen.
Ich möchte in der Listbox per Doppelklick einen Datensatz korrigieren, nach der Korrektur wird aber ein ganz anderer Datensatz überschrieben :-(
In der Anlage hab ich eine Beispieldatei nachgebaut, und die Listbox mit aktuellen Fussballspieler gefüttert.
wenn ich einen nach dem anderen korrigiere klappts, bis auf "Mesut Özil" oder "Schweinsteiger" klicke wird ein ganz anderer Datensatz überschrieben.
Kann sich vielleicht jemand die Datei kurz anschauen, ich komme einfach nicht mehr weiter :-(
https://www.herber.de/bbs/user/70603.xls
vielen Dank im voraus
lg
fatih
kann keinen fehler finden... Gruß
15.07.2010 17:13:10
robert
Ab 8.Datensatz
15.07.2010 17:19:03
Fatih
Hallo Robert,
ab dem 8. Datensatz in der Listbox tritt der Fehler auf.
z.b Doppelklick auf "Samir Nasri" danach auf den Button "Bearbeiten" > Textboxen werden aktiv lg
fatih
Diesen Fehler konnte ich nicht erzeugen ...
15.07.2010 17:16:02
Matthias
Hallo Fatih
Habe jetzt mal Özil geändert und bei mir funzt es einwandfrei
Userbild
Ich habe natürlich nicht alle Elemente gecheckt !
Gruß Matthias
AW: Diesen Fehler konnte ich nicht erzeugen ...
15.07.2010 17:20:43
Fatih
Hallo Lieber Matthias,
ein bisschen weiter unten gibts noch einen Özil, der Fehler kommt ab dem 8.Datensatz vor.
lg fatih
Anzeige
AW: Diesen Fehler konnte ich nicht erzeugen ...
15.07.2010 17:58:40
Nepumuk
Hallo,
wenn ich Listbox wäre, würde ich mich denen auch verweigern. :-(
Aber jetzt mal im Ernst. Wenn du in die Liste zurückschreibst, änderst du die Quelle der Listbox. Und damit ändert sich der Listindex. Also leg eine lokale Variable an in welcher du nach dem Doppelklick den Listindex speicherst. Diese Variable benutzt du beim lesen und schreiben. Es ist nämlich nicht sehr effektiv permanent auf das Objekt zuzugreifen. Ok, bei 2mal oder 3mal ist es noch vertretbar, aber über 20mal ist eindeutig zu viel.
Gruß
Nepumuk
AW: Diesen Fehler konnte ich nicht erzeugen ...
15.07.2010 21:35:30
Fatih
Hi Nepumuk,
ich danke dir vielmals für deine wertvolle Hilfestellung, nur wie mach ich das nur :-(
kannst du mir da nur ansatzweise einbisschen helfen bitte
lg fatih
Anzeige
AW: Diesen Fehler konnte ich nicht erzeugen ...
15.07.2010 22:55:02
Nepumuk
Hallo,
in die Deklarationen der Klasse:
Option Explicit

Public bol As Boolean
Private llngListIndex As Long

Das Doppelklick-Event der Listbox:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error Resume Next
    
    If Me.ListBox1.ListIndex >= 0 Then
        llngListIndex = ListBox1.ListIndex
        cmbma.Value = ListBox1.List(llngListIndex, 0)
        DTPicker1.Value = ListBox1.List(llngListIndex, 1)
        Label13.Caption = ListBox1.List(llngListIndex, 2)
        txtgpartner.Value = ListBox1.List(llngListIndex, 3)
        txtvermittler.Value = ListBox1.List(llngListIndex, 4)
        cmbcourtage.Value = ListBox1.List(llngListIndex, 5)
        txtalle.Value = ListBox1.List(llngListIndex, 6)
        txthelvetia.Value = ListBox1.List(llngListIndex, 7)
        DTPicker2.Value = ListBox1.List(llngListIndex, 8)
        txtinhalt.Value = ListBox1.List(llngListIndex, 9)
        txtanmerkung.Value = ListBox1.List(llngListIndex, 10)
    End If
    cmdschreiben.Visible = False
    cmdkorrektur.Visible = True
End Sub

Das Klick-Event des Commandbuttons:
Private Sub cmdkorrekturok_Click()
    Dim Antwort As Integer
    With Worksheets("Datenbank")
        .Unprotect Password:="Helvetia"
        Cells(llngListIndex + 2, 1).Value = Me.cmbma.Value
        Cells(llngListIndex + 2, 2).Value = Me.DTPicker1.Value
        Cells(llngListIndex + 2, 3).Value = Me.Label13.Caption
        Cells(llngListIndex + 2, 4).Value = Me.txtgpartner.Value
        Cells(llngListIndex + 2, 5).Value = Me.txtvermittler.Value
        Cells(llngListIndex + 2, 6).Value = Me.cmbcourtage.Value
        Cells(llngListIndex + 2, 7).Value = Me.txtalle.Value
        Cells(llngListIndex + 2, 8).Value = Me.txthelvetia.Value
        Cells(llngListIndex + 2, 9).Value = Me.DTPicker2.Value
        Cells(llngListIndex + 2, 10).Value = Me.txtinhalt.Value
        Cells(llngListIndex + 2, 11).Value = Me.txtanmerkung.Value
        .Protect Password:="Helvetia"
    End With
    cmdkorrektur.Visible = False
    cmdkorrekturok.Visible = False
    cmdneuerkontakt.Visible = True
    
    cmbma.Enabled = 0
    DTPicker1.Enabled = 0
    Label13.Enabled = 0
    txtgpartner.Enabled = 0
    txtvermittler.Enabled = 0
    cmbcourtage.Enabled = 0
    cbxneu.Enabled = 0
    txtalle.Enabled = 0
    txthelvetia.Enabled = 0
    cbxlfd.Enabled = 0
    DTPicker2.Enabled = 0
    txtinhalt.Enabled = 0
    txtanmerkung.Enabled = 0
    cbxkeineanm.Enabled = 0
    
    
    Me.cmbma = ""
    Me.cmbcourtage = ""
    Me.txtgpartner = ""
    Me.txtvermittler = ""
    Me.txtalle = ""
    Me.txthelvetia = ""
    Me.txtinhalt = ""
    Me.txtanmerkung = ""
    Me.DTPicker1 = Date
    Me.DTPicker2 = Date
    Me.Label13.Caption = KALENDERWOCHE_DIN(DTPicker1)
    Me.cbxlfd = False
    Me.cbxneu = False
    Me.cbxkeineanm = False
    
    MsgBox "Der ausgewählte Datensatz wurde korrigiert", vbOKOnly + vbInformation, "Helvetia"
    
End Sub

Und hier auch nochmal:
Private Sub cmdlöschen_Click()
    If ListBox1.ListIndex >= 0 Then
        With Worksheets("Datenbank")
            .Unprotect Password:="Helvetia"
            If MsgBox("Wollen Sie den Datensatz " & llngListIndex + 1 & " wirklich löschen.", _
                vbYesNo + vbQuestion, "Löschabfrage, nur zur Sicherheit.") = vbYes Then
                Tabelle1.Rows(ListBox1.ListIndex + 2).Delete
            End If
            
            Me.cmbma = ""
            Me.cmbcourtage = ""
            Me.txtgpartner = ""
            Me.txtvermittler = ""
            Me.txtalle = ""
            Me.txthelvetia = ""
            Me.txtinhalt = ""
            Me.txtanmerkung = ""
            Me.DTPicker1 = Date
            Me.DTPicker2 = Date
            Me.Label13.Caption = KALENDERWOCHE_DIN(DTPicker1)
            Me.cbxlfd = False
            Me.cbxneu = False
            Me.cbxkeineanm = False
            
            .Protect Password:="Helvetia"
            cmdkorrektur.Visible = False
            
        End With
    End If
    
End Sub

Klick mal in der Menüleiste auf Debuggen - Kompilieren von VBAProjekt. Du hast da Code für zwei Textboxen drin die es nicht mehr gibt.
Gruß
Nepumuk
Anzeige
AW: Diesen Fehler konnte ich nicht erzeugen ...
16.07.2010 10:06:50
Fatih
Hallo und eine wunderschönen Vormittag,
vielen Dank Lieber Nepumuk. Hab den Code jetzt richtiggestellt, und es funktioniert super :-)
Eine letzte Frage hätte ich noch, nach der Korrektur Prozedure springt die Listbox Focus also sprich "nur" die die markierte blaue Zeile immer ein paar Zeilen weiter rauf.
Kann ich das nicht so steuern, das nach der Korrektur die markierte Zeile weiterhin an der gleichen Stelle bleibt.
Ich hoffe, ich habe mich jetzt verständlich ausgedrückt.
lg aus Wien
fatih
AW: Diesen Fehler konnte ich nicht erzeugen ...
17.07.2010 08:08:20
Nepumuk
Hallo,
einfach diese Zeile:
ListBox1.Selected(llngListIndex) = True
vor der MsgBox im cmdkorrekturok_Click-Event einfügen.
Gruß
Nepumuk
Anzeige
AW: Diesen Fehler konnte ich nicht erzeugen ...
18.07.2010 17:43:06
Fatih
Hallo,
ich bedanke mir recht herzlich bei dir Nepumuk, klappt wunderbar.
Lg aus Wien

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige