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

Forumthread: Zugriff verweigert

Zugriff verweigert
06.12.2019 12:11:24
Thomas
Hallo Excelfreunde,
ich versuche gerade Daten von einer Listbox in eine andere zu kopieren.
anbei mein Versuch:
Option Explicit
Private WithEvents mobjListBox As MSForms.ListBox
Private WithEvents mobjtextb As MSForms.TextBox
Private mobjUserform As Object
Friend Property Set prpSetListbox(objListBox As MSForms.ListBox)
Set mobjListBox = objListBox
End Property
Friend Property Set prpSetUserform(objUserform As Object)
Set mobjUserform = objUserform
'Set TextBox = objUserform
End Property
Private Sub mobjListBox_Click()
'    With mobjListBox
'        mobjUserform.Label1.Caption = .Text
'        mobjUserform.Label2.Caption = .List(.ListIndex, 1)
'        'mobjListBox .TextBox1 = .List(.ListIndex, 1)
'    End With
'    mobjUserform.Show
End Sub
Private Sub mobjListBox_MouseMove(ByVal Button As _
Integer, ByVal Shift As Integer, ByVal X As _
Single, ByVal Y As Single)
Dim MyDataObject As DataObject
Dim i As Long
Dim Effect As Integer
With mobjListBox
If Button = 1 Then
For i = 0 To .ListCount - 1
If .Selected(i) Then
Set MyDataObject = New DataObject
MyDataObject.SetText .List(i)
Effect = MyDataObject.StartDrag
End If
Next
End If
End With
End Sub

Private Sub mobjListBox_BeforeDragOver(ByVal Cancel As _
MSForms.ReturnBoolean, ByVal Data As _
MSForms.DataObject, ByVal X As Single, _
ByVal Y As Single, ByVal DragState As Long, _
ByVal Effect As MSForms.ReturnEffect, _
ByVal Shift As Integer)
Cancel = True
Effect = 1
End Sub

Private Sub mobjListBox_BeforeDropOrPaste(ByVal _
Cancel As MSForms.ReturnBoolean, _
ByVal Action As Long, ByVal Data As _
MSForms.DataObject, ByVal X As Single, _
ByVal Y As Single, ByVal Effect As _
MSForms.ReturnEffect, ByVal Shift As Integer)
Cancel = True
Effect = 1
mobjListBox.AddItem Data.GetText
End Sub
Leider erhalte ich in dieser Zeile die Fehlermeldung:
"Zugriff verweigert
https://www.herber.de/bbs/user/133643.xlsb
Weiß jemand wie man dieses Problem lösen könnte?
Habt schon mal recht vielen dank für euer Interesse.
mfg thomas
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff verweigert
06.12.2019 13:44:27
Nepumuk
Hallo Thomas,
1. ListBoxen die du per RowSource füllst ist Drop nicht möglich, daher die Fehlermeldung.
2. Du hast in der Klasse jeweils eine ListBox, da kannst du also maximal in der selben Box Drag&Dropen, aber niemals in eine andere.
Gruß
Nepumuk
AW: Zugriff verweigert
06.12.2019 14:06:08
Nepumuk
Hallo Thomas,
ich nochmal. den 2. Satz nehme ich zurück, nach eine kleinen Pause kam mir die Einsicht dass es doch geht. Nur eben nicht wenn sie mit Punkt 1 gesperrt sind.
Gruß
Nepumuk
Anzeige
AW: Zugriff verweigert
06.12.2019 15:34:44
Thomas
Hallo Nepumuk,
ja dann klappt es. Besten dank.
Ich habe das jetzt in der Listbox Monatsuche so eingebaut. Das einzige was noch nicht funktioniert, das der zu verschiebene. Datensatz in der alten Listbox nicht gelöscht wird.
Ich habe noch eine Userform mit eingebaut wo es funktioniert. Ich schaffe es nur nicht das beide Versionen zusammen zu bauen.
https://www.herber.de/bbs/user/133649.xlsb
Kannst dir dies mal anschauen so das in der UF Monatsuche der verschobene Datensatz aus der ursprungs Listbox gelöscht wird?
Hab schon mal rechtvielen dank für deine Hilfe
mfg thomas
Anzeige
AW: Zugriff verweigert
06.12.2019 16:46:59
Nepumuk
Hallo Thomas,
ich habe es dir mal eingebaut: https://www.herber.de/bbs/user/133651.xlsb
Wenn du mich jetzt fragst, wie beide Spalten aus der ListBox übertragen werden können, dann muss ich dir leider sagen, dass ich dafür keine Lösung habe.
Gruß
Nepumuk
Anzeige
besten dank an Nepumuk
06.12.2019 17:47:59
Thomas
Hallo Nepumuk,
hab besten dank für deine Hilfe.
Die zweite Spalte muss glaube ich nicht unbedingt sein. In der ersten Spalte habe ich in meiner richtigen Datei eine eindeutige Nummer. Ich denke das ich damit irgendwie was machen kann.
Du hast mir richtig super geholfen.
Besten dank für deine Lösung.
Ich wünsch dir ein schönes WE.
mfg thomas
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zugriff verweigert: Lösungen für Excel und VBA


Schritt-für-Schritt-Anleitung

Um das Problem "Zugriff verweigert" in Excel VBA zu beheben, kannst Du folgende Schritte ausführen:

  1. Überprüfen der ListBox-Einstellungen: Stelle sicher, dass die ListBox nicht über die RowSource-Eigenschaft gefüllt ist, wenn du Drag-and-Drop verwenden möchtest. Dies kann zu der Fehlermeldung "Zugriff verweigert" führen.

  2. Code anpassen: Falls Du versuchst, Elemente von einer ListBox in eine andere zu kopieren, überprüfe den Code, um sicherzustellen, dass er korrekt konfiguriert ist. Hier ein Beispiel für die BeforeDropOrPaste-Methode:

    Private Sub mobjListBox_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, _
        ByVal Action As Long, ByVal Data As MSForms.DataObject, ByVal X As Single, _
        ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
    
        Cancel = True
        Effect = 1
        mobjListBox.AddItem Data.GetText
    End Sub
  3. Testen: Teste den angepassten Code, um sicherzustellen, dass die ListBox-Daten korrekt verschoben werden.


Häufige Fehler und Lösungen

  • Fehler: "Zugriff verweigert": Dieser Fehler tritt häufig auf, wenn Du versuchst, Daten aus einer ListBox zu ziehen, die via RowSource gefüllt ist. In diesem Fall solltest Du die ListBox manuell füllen.

  • Lösung: Achte darauf, dass die ListBox, von der Du Daten ziehst, nicht gesperrt ist. Entferne die RowSource-Zuweisung und fülle die ListBox stattdessen mit Code.


Alternative Methoden

Falls das Problem weiterhin besteht, kannst Du alternative Methoden in Betracht ziehen:

  • Verwendung von Zwischenablage: Du kannst die Zwischenablage verwenden, um Daten zu kopieren und einzufügen, anstatt Drag-and-Drop zu verwenden. Hier ein einfaches Beispiel:

    Dim MyDataObject As DataObject
    Set MyDataObject = New DataObject
    MyDataObject.SetText "DeinText"
    MyDataObject.PutInClipboard
  • Direktes Zuweisen: Anstatt Drag-and-Drop zu nutzen, kannst Du die Werte direkt von einer ListBox zur anderen zuweisen. Dies kann die Fehlermeldung "Excel Zugriff verweigert" vermeiden.


Praktische Beispiele

Hier sind einige praktische Beispiele, um das Drag-and-Drop in ListBoxen zu implementieren:

  1. Beispiel für das Verschieben von Elementen:

    Private Sub mobjListBox_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, _
        ByVal Action As Long, ByVal Data As MSForms.DataObject, ByVal X As Single, _
        ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
    
        Dim item As String
        item = Data.GetText
        mobjListBox.AddItem item
    
        ' Element aus der ursprünglichen ListBox löschen
        Dim i As Long
        For i = 0 To mobjListBox.ListCount - 1
            If mobjListBox.Selected(i) Then
                mobjListBox.RemoveItem i
                Exit For
            End If
        Next i
    End Sub

Tipps für Profis

  • Debugging: Nutze die Debugging-Tools von Excel, um zu prüfen, wo genau der "Zugriff verweigert"-Fehler auftritt. Setze Haltepunkte im Code, um die Ausführung Schritt für Schritt zu verfolgen.

  • Erweiterte Benutzerformulare: Wenn Du häufig mit ListBoxen arbeitest, überlege, benutzerdefinierte Formulare zu erstellen, die die Funktionalität erweitern und die Benutzerfreundlichkeit verbessern.


FAQ: Häufige Fragen

1. Warum erhalte ich die Fehlermeldung "Zugriff verweigert"?
Diese Fehlermeldung tritt häufig auf, wenn Du versuchst, Drag-and-Drop mit einer ListBox zu verwenden, die über RowSource gefüllt ist.

2. Wie kann ich den Fehler beheben?
Entferne die RowSource-Zuweisung und fülle die ListBox manuell, um die Fehlermeldung zu vermeiden.

3. Gibt es alternative Möglichkeiten, Daten zu übertragen?
Ja, Du kannst die Zwischenablage verwenden oder die Werte direkt von einer ListBox zur anderen zuweisen.

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