In den vorherigen Beiträgen dieser Beitragsreihe haben wir uns bereits angesehen, wie Sie auf die Module im VBA-Editor zugreifen, neue Module erstellen und den enthaltenen Code bearbeiten. Es fehlt allerdings noch eine wichtige Schnittstelle zwischen Benutzer und der automatisierten Bearbeitung von VBA-Code: Die Klasse CodePane, die unter anderem die Möglichkeit bietet, vom Benutzer gesetzte Markierungen im Code auszulesen und solche zu setzen. Letzteres können Sie beispielsweise nutzen, um per VBA gesuchte Stellen im Code zu markieren, damit der Benutzer diese erkennen kann. Dieser Beitrag stellt die CodePane-Klasse und ihre Möglichkeiten vor.
Vorbereitung
Um die Elemente der Klasse VBE nutzen zu können, benötigen Sie einen Verweis auf die Bibliothek Microsoft Visual Basic for Applications Extensibility 5.3 Object Library, den Sie im Verweise-Dialog des VBA-Editors hinzufügen können (Menüeintrag Extras|Verweise).
Vorbereitende Beiträge
Wenn Sie erfahren wollen, wie Sie überhaupt bis zu der hier beschriebenen Klasse gelangen, helfen die folgenden Beiträge weiter:
- VBA-Projekt per VBA referenzieren (www.access-im-unternehmen.de/1337)
- Zugriff auf den VBA-Editor mit der VBE-Klasse (www.access-im-unternehmen.de/1350)
- Zugriff auf VBA-Projekte per VBProject (www.access-im-unternehmen.de/1351)
- Module und Co. im Griff mit VBComponent (www.access-im-unternehmen.de/1352)
- VBA-Code manipulieren mit der CodeModule-Klasse (www.access-im-unternehmen.de/1353)
Elemente der CodePane-Klasse
Die CodePane-Klasse und ihre Eigenschaften, Methoden und Auflistungen können Sie im Objektkatalog (zu öffnen mit der Taste F2) im Überblick ansehen, wenn Sie dort nach CodePane suchen (siehe Bild 1). Die CodePane-Klasse hat folgende Eigenschaften, Methoden und Auflistungen:

Bild 1: Die CodePane-Klasse im Objektkatalog
- CodeModule: Verweis auf das CodeModule-Objekt, das im CodePane-Objekt enthalten ist
- CodePaneView: Gibt die aktuelle Darstellung im CodePane wieder – entweder vollständiges Modul (1) oder nur einzelne Prozeduren (0).
- Collection: Erlaubt den Zugriff auf alle geöffneten CodePane-Objekte.
- CountOfVisibleLines: Liefert die Anzahl der sichtbaren Zeilen im Fenster.
- GetSelection: Liefert den aktuell markierten Bereich mit den vier Rückgabeparametern.
- SetSelection: Setzt eine Markierung anhand von vier Parametern.
- Show: Versieht das CodePane-Objekt, für das diese Methode aufgerufen wurde, mit dem Fokus.
- TopLine: Gibt die Zeilennummer der oben im Fenster angezeigten Zeile aus und erlaubt auch das Einstellen dieser Zeile.
- VBE: Verweis auf die VBE-Klasse.
- Window: Verweis auf das übergeordnete Window-Objekt
Auf das CodePane-Objekt zugreifen
Um auf ein CodePane-Objekt zuzugreifen, gibt es mehrere Möglichkeiten. Der Zugriff erfolgt entweder von der Auflistung CodePanes der VBE-Klasse, vom untergeordneten CodeModule-Element oder über die Eigenschaft ActiveCodePane der VBE-Klasse.
Wenn Sie den Namen eines Moduls kennen und auf sein CodePane-Objekt zugreifen wollen, nutzen Sie den Weg über CodeModule. Dazu referenzieren Sie zuerst das CodeModule-Objekt, das sie über die gleichnamige Eigenschaft des entsprechenden Elements der VBComponents-Auflistung des aktuellen VB-Projekts erhalten. Dieses bietet über die CodePane-Eigenschaft Zugriff auf das CodePane-Objekt.
Damit wir sehen, ob wir das richtige CodePane-Objekt referenzieren, zeigen wir sein Fenster mit der Show-Methode an:
Public Sub CodePanePerCodeModule() Dim objCodeModule As CodeModule Dim objCodePane As CodePane Set objCodeModule = VBE.ActiveVBProject. VBComponents("mdlBeispielcode").CodeModule Set objCodePane = objCodeModule.CodePane objCodePane.Show End Sub
Damit können Sie auf alle CodePane-Elemente zugreifen, auch die von aktuell noch geschlossenen Modulen. Nur die aktuell in Window-Elementen angezeigten CodePane-Elemente können Sie über die Auflistung CodePanes der VBE-Klasse ansprechen.
Die folgende Prozedur durchläuft in einer For Each-Schleife alle Elemente der CodePanes-Auflistung und referenziert das jeweils aktuelle Element mit der Variablen objCodePane:
Public Sub CodePanePerWindow() Dim objCodePane As CodePane For Each objCodePane In VBE.CodePanes Debug.Print objCodePane.CodeModule.Parent.Name Next objCodePane End Sub
Da das CodePane-Objekt selbst keine Name-Eigenschaft enthält, greifen wir über objCodePane.CodeModule.Parent auf das VBComponent-Objekt dieses CodePane-Objekts zu und geben seinen Namen aus. Das liefert nur die Namen der Module, die aktuell geöffnet sind.
Aktuelles CodePane-Objekt referenzieren
Meist interessiert in Zusammenhang mit dem CodePane-Objekt jedoch das aktuelle CodePane-Objekt. Dieses referenzieren Sie mit der Eigenschaft ActiveCodePane der VBE-Klasse.
Die folgende Prozedur erledigt das und gibt den Namen des VBComponent-Objekts des CodeModule-Objekts des aktuellen CodePane-Objekts im Direktbereich aus:
Public Sub AktuellesCodePane() Dim objCodePane As CodePane Set objCodePane = VBE.ActiveCodePane Debug.Print objCodePane.CodeModule.Parent.Name End Sub
Verschiedene Ansichten im CodePane-Objekt
Für die Anzeige im CodePane-Objekt gibt es zwei Optionen. Diese lesen Sie über die schreibgeschützte Eigenschaft CodePaneView ein. Die möglichen Werte lauten:
- vbext_cv_FullModuleView (1): Zeigt immer das ganze Modul an.
- vbext_cv_ProcedureView (0): Zeigt nur den ausgewählten Bereich beziehungsweise die ausgewählte Prozedur an.
Sie können die Ansicht nur über die Optionen des VBA-Editors einstellen, und zwar auf der Registerseite Editor im Bereich Fenstereinstellungen unter Standardmäßig ganzes Modul anzeigen (siehe Bild 2).

Bild 2: Einstellen der Eigenschaft
Die Einstellung vbext_cv_ProcedureView ist eher selten anzutreffen und sieht beispielsweise wie in Bild 3 aus.

Nur für Abonnenten
Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.
Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.
So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.
Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.
Bereits Abonnent? Hier einloggen
Kostenlos & unverbindlich
Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?
Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?
In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.
Jetzt kostenloses Access-Audit anfordern →