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

VBA-Code f. Combobox->Fehler:Zugriff verweigert ?

Forumthread: VBA-Code f. Combobox->Fehler:Zugriff verweigert ?

VBA-Code f. Combobox->Fehler:Zugriff verweigert ?
k
Hallo,
...habe eine Userform mit einer Combobox und diese zeigt alle Kunden aus einer Tabelle an.
Nun möchte ich gern einen Filter darauf anlegen - anhand der Auswahl des Obtionsbuttons.
Dafür habe ich folgenden Code verwenden wollen:
' Wenn Optionsbutton2 gewählt, dann fülle die Combobox CB0 nur mit Kundendes des aktiven ADMs
Private Sub OBA2_Change()
Dim iZeile As Long
' Prozedur für CB0-Change stoppen
ChangeBloc = True
' Prüfung ob AUswahl getroffen für Filterung auf ADM
If OBA2.Value = True Then
' gehe alle Zeilen in dem Datenblatt KSE von 2 bis zum letzen Eintrag durch
For iZeile = 2 To Worksheets("KSE").Cells(Rows.Count, 1).End(xlUp).Row
' wenn der Eintrag in KSE Spalte 5 (E = ADM-Name) identisch mit dem User der Datei,
If Worksheets("KSE").Cells(iZeile, 5) = Worksheets("Basic").Cells(3, 2) Then
' dann übernehme den Wert aus Spalte 11 (Kundennamen) für die Combobox
CB0.AddItem Cells(iZeile, 11)      ' 
Bekomme aber eine Fehlermeldung bei der Additem - Stelle "Zugriff verweigert!" ?
Woran liegt es - wie kann ich es sonst lösen ?
Gruß und Danke !
Kay
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA-Code f. Combobox->Fehler:Zugriff verweigert ?
17.08.2009 11:41:03
Rudi
Hallo,
setze die RowSource vorher auf "".
Gruß
Rudi
AW: VBA-Code f. Combobox->Fehler:Zugriff verweigert ?
18.08.2009 17:04:59
k
Hallo,
...Danke - damit war das Problem schnell gelöst. Leider hatte ich noch nicht geantwortet - bitte zu entschuldigen !
Gruß
Kay
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung bei „Zugriff verweigert“ in der VBA-ComboBox


Schritt-für-Schritt-Anleitung

  1. Öffne die Userform: Stelle sicher, dass Deine Userform mit der ComboBox (CB0) korrekt eingerichtet ist.

  2. Überprüfe den Code: Verwende den folgenden VBA-Code, um die ComboBox mit Werten zu füllen, basierend auf der Auswahl eines Optionsbuttons:

    Private Sub OBA2_Change()
       Dim iZeile As Long
       ' Prozedur für CB0-Change stoppen
       ChangeBloc = True
    
       ' Prüfung, ob Auswahl getroffen für Filterung auf ADM
       If OBA2.Value = True Then
           ' Setze RowSource auf leer
           CB0.RowSource = ""
    
           ' gehe alle Zeilen in dem Datenblatt KSE von 2 bis zum letzten Eintrag durch
           For iZeile = 2 To Worksheets("KSE").Cells(Rows.Count, 1).End(xlUp).Row
               ' wenn der Eintrag in KSE Spalte 5 (E = ADM-Name) identisch mit dem User der Datei,
               If Worksheets("KSE").Cells(iZeile, 5) = Worksheets("Basic").Cells(3, 2) Then
                   ' dann übernehme den Wert aus Spalte 11 (Kundennamen) für die Combobox
                   CB0.AddItem Cells(iZeile, 11)
               End If
           Next iZeile
       End If
    End Sub
  3. Testen: Führe die Userform aus und wähle den Optionsbutton aus. Die ComboBox sollte nun korrekt mit den Kundennamen gefüllt werden.


Häufige Fehler und Lösungen

  • Fehler: Zugriff verweigert!: Dieser Fehler tritt häufig auf, wenn die RowSource der ComboBox nicht korrekt gesetzt ist. Stelle sicher, dass Du die RowSource vor dem Hinzufügen von Elementen auf leer setzt.

  • Keine Elemente in der ComboBox: Wenn nach dem Ausführen des Codes keine Elemente in der ComboBox angezeigt werden, überprüfe, ob die Bedingungen im If-Statement korrekt sind und ob die Daten im Arbeitsblatt stimmen.


Alternative Methoden

Eine alternative Methode zur Befüllung der ComboBox könnte die Verwendung von Arrays sein. Dies könnte in bestimmten Fällen die Performance verbessern, insbesondere wenn viele Daten vorhanden sind.

Private Sub OBA2_Change()
    Dim iZeile As Long
    Dim KundenArray() As String
    Dim Count As Long

    If OBA2.Value = True Then
        ' Setze RowSource auf leer
        CB0.RowSource = ""

        ' Durchlaufe die Daten und fülle das Array
        Count = 0
        For iZeile = 2 To Worksheets("KSE").Cells(Rows.Count, 1).End(xlUp).Row
            If Worksheets("KSE").Cells(iZeile, 5) = Worksheets("Basic").Cells(3, 2) Then
                ReDim Preserve KundenArray(Count)
                KundenArray(Count) = Cells(iZeile, 11)
                Count = Count + 1
            End If
        Next iZeile

        ' Fülle die ComboBox mit dem Array
        For i = LBound(KundenArray) To UBound(KundenArray)
            CB0.AddItem KundenArray(i)
        Next i
    End If
End Sub

Praktische Beispiele

Wenn Du eine Userform zur Verwaltung von Kunden hast, kannst Du den oben genannten Code verwenden, um die ComboBox dynamisch mit Kundennamen zu füllen. Dies ist besonders nützlich in Formularen, wo der Benutzer aus einer Liste von Kunden auswählen muss.


Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler während der Ausführung abzufangen und zu behandeln.

  • Optimierung: Wenn Du große Datenmengen hast, erwäge, die Sichtbarkeit der Userform zu deaktivieren, während die ComboBox gefüllt wird, um die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Warum bekomme ich den Fehler „Zugriff verweigert“ beim Hinzufügen von Elementen zur ComboBox?
Dieser Fehler tritt auf, wenn die RowSource der ComboBox nicht richtig gesetzt ist. Stelle sicher, dass Du sie auf leer setzt, bevor Du mit AddItem arbeitest.

2. Kann ich die ComboBox auch mit Daten aus einer anderen Quelle befüllen?
Ja, Du kannst auch Daten aus einer Datenbank oder einer anderen Excel-Datei verwenden, indem Du die entsprechenden Verbindungs- und Abfrageoptionen in VBA nutzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige