Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Listbox Markierung aufheben

Forumthread: Listbox Markierung aufheben

Listbox Markierung aufheben
09.02.2016 05:54:41
Ludmila
Hallo Spezialisten,
Nach dem Auswählen einer Listbox erscheint eine eigene MsgBox mit 3 Button.
ja, nein, abbruch
nach Auswahl des Button Abbruch soll auch die Markierung aufgehoben werden.
Leider funktioniert das nicht.
Wo liegt der Fehler?
Danke, und schönen Fasching!
Gruß
Ludmila
Private Sub lstLRG_Click()
With UFRG
For ii = 0 To .lstLRG.ListCount - 1
If .lstLRG.Selected(ii) Then
.lblRGZNr.Caption = .lstLRG.List(ii, 6)
End If
Next ii
.lstLRG.ListIndex = -1
End With
UFMeldung.Show
If sJaNein = "ja" Then Unload UFMsg: cmdZurRG = True
If sJaNein = "nein" Then Unload UFMsg: Exit Sub
If sJaNein = "abbruch" Then
Unload UFMsg
If UFRG.lstLRG.ListIndex >= 0 Then UFRG.lstLRG.Selected(UFRG.lstLRG.ListIndex) = False
Exit sub
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox Markierung aufheben
09.02.2016 07:46:51
Oberschlumpf
Hi ?
Änder diese Zeile
If UFRG.lstLRG.ListIndex >= 0 Then UFRG.lstLRG.Selected(UFRG.lstLRG.ListIndex) = False

um in
If UFRG.lstLRG.ListIndex >= 0 Then UFRG.lstLRG.ListIndex = -1

Hilfts?
Ciao
Thorsten

Anzeige
AW: Listbox Markierung aufheben
09.02.2016 08:32:21
Ludmila
Hallo Thorsten,
leider funktioniert das nicht
ebenfalls keine Funktion
For ii = 0 To UFRG.lstLRG.ListCount - 1
If UFRG.lstLRG.Selected(ii) = True Then UFRG.lstLRG.Selected(ii) = False
Next ii
Danke, vielleicht gibt es noch eine andere Möglichekeit.
Gruß
Ludmila

Anzeige
AW: Listbox Markierung aufheben
09.02.2016 10:59:17
Rudi
Hallo,
If sJaNein = "abbruch" Then
Unload UFMsg
UFRG.lstLRG.List = UFRG.lstLRG.List
End If
Gruß
Rudi

AW: Listbox Markierung aufheben
09.02.2016 11:42:06
Ludmila
Hallo Rudi,
leider funktioniert es nicht.
Jetzt kommt Fehler 70, Zugriff verweigert
Habe es mal ohne meine eigene MsgBox probiert
Hier mein gesamter Code:
Private Sub lstLRG_Click()
Set WkbD = Workbooks(sD)
Set WksRGJ = WkbD.Worksheets(RGJ)
Set WksNK = WkbD.Worksheets(NK)
With UFRG
For ii = 0 To .lstLRG.ListCount - 1
If .lstLRG.Selected(ii) Then
.lblRGZNr.Caption = .lstLRG.List(ii, 6)
End If
Next ii
lRe = .lblRGZNr.Caption
.lblRGAltNeu.Caption = "Alt"
End With
With WksRGJ
lSp = .Rows(1).Find(What:="RG_RGNR", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) _
.Column: UFRG.txtRGNr.Text = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_DATUM", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.cboRGDatum.Value = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_DATEI_NAME", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.lblRGAltDateixlsm.Caption = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_DATEI_NAME_PDF", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder: _
=xlByRows).Column: UFRG.lblRGAltDateipdf.Caption = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_SSATZ", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.cboRGSteuerSatz.Value = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_ART", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows). _
Column: UFRG.cboRGArt.Value = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_BL_KOMP", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.cboRGAnsp.Text = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_BL_ANREDE", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.txtRGAnspAnr.Text = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_BL_TITEL", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.txtRGAnspTitel.Text = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_BRIEF", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.txtRGBriefAnrede.Text = .Cells(lRe, lSp)
lSp = .Rows(1).Find(What:="RG_ZAHL_FAELLIG", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column: UFRG.txtRGZahlFaellig.Text = .Cells(lRe, lSp)
End With
Dim bytmsg As Byte
bytmsg = MsgBox("Ja, Nein oder Abbruch?", vbYesNoCancel, "Rechnung")
If bytmsg = vbYes Then
cmdZurRG = True
ElseIf bytmsg = vbNo Then
With WksNK
lRe = .Columns(1).Find(What:="RECHNUNGKREIS", LookIn:=xlValues, LookAt:=xlWhole,  _
SearchOrder:=xlByRows).Row
lSp = .Rows(1).Find(What:="NKKOMPLETT", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Column
UFRG.txtRGNr.Text = .Cells(lRe, lSp)
End With
With UFRG
.lblRGAltNeu.Caption = "Alt1"
.lblRGZNr.Caption = ""
.cboRGArt.ListIndex = -1
.cboRGArt.SetFocus
End With
Else
UFRG.lstLRG.List = UFRG.lstLRG.List
Exit Sub
End If
End Sub

Danke!
Gruß
Ludmila

Anzeige
AW: Listbox Markierung aufheben
09.02.2016 11:51:40
Rudi
Hallo,
dann hast du für die Listbox eine RowSource definiert.
Fülle sie zur Laufzeit.
z.B.
Private Sub UserForm_Initialize()
lstLRG.List = Sheets(1).Range("A1:A10").Value
End Sub
Gruß
Rudi

AW: Listbox Markierung aufheben
09.02.2016 12:08:41
Ludmila
Hallo Rudi,
ich will Dich nicht Nerven, aber die Listbox wird wie folgt eingelesen.
es funktioniert, das ja und nein nur das abbrechen eben nicht
Private Sub RG_lst_einlesen()
Dim arr()
Dim iRowU As Integer
Set WkbD = Workbooks(sD)
Set WksRGJ = WkbD.Worksheets(RGJ)
UFRG.lstLRG.Clear
With WksRGJ
lSp = .Rows(1).Find(What:="RG_KDNR", LookIn:=xlValues, LookAt:=xlWhole).Column
lSp1 = .Rows(1).Find(What:="RG_PROJNR", LookIn:=xlValues, LookAt:=xlWhole).Column
For ii = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If Not IsEmpty(.Cells(ii, 1)) And .Cells(ii, lSp) = UFRG.txtRGKDNr.Value And .Cells(ii,  _
lSp1) = UFRG.txtRGProjNrIntern.Value Then
ReDim Preserve arr(0 To 7, 0 To iRowU)
lSp2 = .Rows(1).Find(What:="RG_DATUM", LookIn:=xlValues, LookAt:=xlWhole).Column: arr(0, _
iRowU) = .Cells(ii, lSp2)
lSp2 = .Rows(1).Find(What:="RG_ART", LookIn:=xlValues, LookAt:=xlWhole).Column: arr(1,  _
iRowU) = .Cells(ii, lSp2)
lSp2 = .Rows(1).Find(What:="RG_RGNR", LookIn:=xlValues, LookAt:=xlWhole).Column: arr(2,  _
iRowU) = .Cells(ii, lSp2)
lSp2 = .Rows(1).Find(What:="RG_AUSF_VON", LookIn:=xlValues, LookAt:=xlWhole).Column:  _
arr(3, iRowU) = .Cells(ii, lSp2)
lSp2 = .Rows(1).Find(What:="RG_BRUTTO", LookIn:=xlValues, LookAt:=xlWhole).Column: arr( _
4, iRowU) = FormatNumber(.Cells(ii, lSp2), 2)
lSp2 = .Rows(1).Find(What:="RG_SPDATUM", LookIn:=xlValues, LookAt:=xlWhole).Column: arr( _
5, iRowU) = .Cells(ii, lSp2)
lSp2 = .Rows(1).Find(What:="RG_ID", LookIn:=xlValues, LookAt:=xlWhole).Column: arr(6,  _
iRowU) = .Cells(ii, lSp2)
arr(7, iRowU) = " "
iRowU = iRowU + 1
End If
Next ii
End With
With UFRG
If SafeArrayGetDim(arr)  0 Then .lstLRG.Column = arr
.fraRGLst.Visible = True
With .lblRGGes: .Top = UFRG.fraRGLst.Height - 160: .Caption = "Gesamtbericht(e) :" & " " &  _
UFRG.lstLRG.ListCount: End With
.lblRGTextaend.Caption = "Für dieses Projekt geschriebene Rechnungen, bei Auswahl kann RG geä _
ndert werden"
End With
End Sub

Danke!
Gruß
Ludmila

Anzeige
AW: Listbox Markierung aufheben
09.02.2016 12:51:42
Rudi
Hallo,
ohne die Mappe kann ich dir nicht helfen.
Gruß
Rudi

AW: geht nicht zu groß Danke! (o.T)
09.02.2016 13:17:27
Ludmila
.
Anzeige
Anzeige

Infobox / Tutorial

Listbox Markierung aufheben in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Finde das UserForm:

    • Suche dein UserForm, das die Listbox enthält.
  3. Füge oder bearbeite das Click-Ereignis für die Listbox:

    • Verwende den folgenden Code, um die Markierung aufzuheben, wenn der Benutzer "Abbruch" auswählt:
    Private Sub lstLRG_Click()
       With UFRG
           For ii = 0 To .lstLRG.ListCount - 1
               If .lstLRG.Selected(ii) Then
                   .lblRGZNr.Caption = .lstLRG.List(ii, 6)
               End If
           Next ii
           .lstLRG.ListIndex = -1
       End With
    
       Dim bytmsg As Byte
       bytmsg = MsgBox("Ja, Nein oder Abbruch?", vbYesNoCancel, "Rechnung")
    
       If bytmsg = vbYes Then
           cmdZurRG = True
       ElseIf bytmsg = vbNo Then
           ' Hier kannst du Aktionen für "Nein" definieren
       Else
           UFRG.lstLRG.ListIndex = -1 ' Markierung aufheben
       End If
    End Sub
  4. Testen:

    • Schließe den VBA-Editor und teste das UserForm, um sicherzustellen, dass die Markierung der Listbox erfolgreich aufgehoben wird.

Häufige Fehler und Lösungen

  • Fehler 70: Zugriff verweigert:

    • Dieser Fehler tritt häufig auf, wenn auf ein nicht vorhandenes Objekt zugegriffen wird. Stelle sicher, dass alle Objekte (wie UFRG oder UFMsg) korrekt initialisiert sind.
  • Markierung wird nicht aufgehoben:

    • Prüfe, ob die Zeile .lstLRG.ListIndex = -1 korrekt platziert ist, um die Auswahl aufzuheben. Sie sollte direkt nach der MsgBox-Abfrage stehen.

Alternative Methoden

  • Verwendung der RowSource:

    • Stelle sicher, dass die Listbox nicht statisch gefüllt ist. Stattdessen kann sie zur Laufzeit mit den folgenden Code gefüllt werden:
    Private Sub UserForm_Initialize()
       lstLRG.List = Sheets(1).Range("A1:A10").Value
    End Sub
  • Alle Auswahl zurücksetzen:

    • Eine andere Möglichkeit ist, alle selektierten Elemente der Listbox in einer Schleife zurückzusetzen:
    For ii = 0 To UFRG.lstLRG.ListCount - 1
       UFRG.lstLRG.Selected(ii) = False
    Next ii

Praktische Beispiele

  • Beispiel für die Verwendung der MsgBox:

    • Du kannst die MsgBox verwenden, um dem Benutzer verschiedene Optionen zu geben. Hier ein Beispiel für das Abbrechen der Auswahl:
    If MsgBox("Möchten Sie die Auswahl wirklich aufheben?", vbYesNo) = vbYes Then
       UFRG.lstLRG.ListIndex = -1
    End If
  • Dynamisches Einlesen:

    • Wenn du die Listbox dynamisch aus einer Tabelle füllen möchtest, kannst du dies im Initialisierungsbereich des UserForms tun.

Tipps für Profis

  • Verwende Error Handling:

    • Füge Error-Handling in deinen Code ein, um unerwartete Fehler zu vermeiden. Beispiel:
    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Modularisiere deinen Code:

    • Teile deinen Code in kleinere Subroutinen auf, um die Wartbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Warum wird die Listbox nicht aktualisiert?

  • Stelle sicher, dass die Datenquelle korrekt gesetzt und geladen wird. Überprüfe auch, ob die Listbox auf das richtige UserForm verweist.

2. Wie kann ich mehrere Elemente in der Listbox auswählen?

  • Setze die MultiSelect-Eigenschaft der Listbox auf fmMultiSelectMulti oder fmMultiSelectExtended, um mehrere Auswahlmöglichkeiten zu ermöglichen.

3. Was bedeutet der Fehler 70: Zugriff verweigert?

  • Dieser Fehler erscheint, wenn du versuchst, auf ein Objekt zuzugreifen, das nicht verfügbar oder nicht initiiert ist. Überprüfe alle Objekte auf ihre Existenz und Sichtbarkeit.
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18