Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox Markierung aufheben

Forumthread: Listbox Markierung aufheben

Listbox Markierung aufheben
09.02.2016 04: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 06: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 07: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 09: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 10: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 10: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 11: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 11: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 12: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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige