Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

17.5.9 Ermitteln der Position der aktuellen Markierung

17.5.10 Ermitteln des Inhalts der aktuellen Markierung

Für die Rückgabe des Inhalts des aktuell markierten Bereichs gibt es keine eingebaute Funktion, sodass Sie selbst Hand anlegen müssen. Diesmal benötigen Sie zwei Objekte: eines, das auf das aktuelle Codefenster verweist, und eines für das entsprechende Codemodul.

Mit der Funktion GetSelection des aktuellen CodePane-Objekts ermittelt die Funktion GetSelectedText (eigentlich passt die Bezeichnung GetSelection besser, aber so heißt halt schon die darin verwendete CodePane-Methode) die Parameter des markierten Bereichs und speichert diese in vier entsprechenden Long-Variablen.

Mit der Lines-Methode des CodeModule-Objekts liest die Funktion dann alle Zeilen aus, die vom markierten Bereich geschnitten werden. Dann kommt der knifflige Teil: Natürlich kann sich eine Markierung beispielsweise auch von der Mitte der einen bis zur Mitte der übernächsten Codezeile erstrecken. Die nicht markierten Teile der ersten und der letzten Zeile muss die Funktion dann natürlich noch entfernen.

Für die erste Zeile reicht der einfache Einsatz der Mid-Funktion aus: Diese erhält als Startposition einfach den Wert des Parameters lngStartColumn der Markierung und gibt alles zurück, was sich rechts davon befindet.

Eine nicht vollständige letzte Zeile erfordert zusätzlichen Aufwand: Erst ermitteln Sie mit der Len-Funktion die Länge der letzten Zeile. Die Differenz zwischen dem Wert des Parameters lngLastColumn und der Länge der letzten Zeile gibt an, um wie viele Zeichen Sie die komplette Zeichenkette kürzen müssen.

Public Function GetSelectedText()

    Dim objCodePane As CodePane
    Dim objCodeModule As CodeModule
    Dim lngStartLine As Long
    Dim lngStartColumn As Long
    Dim lngEndLine As Long
    Dim lngEndColumn As Long
    Dim strSelection As String
    Dim lngLenLastLine As Long

    Set objCodePane = VBE.ActiveCodePane
    Set objCodeModule = VBE.ActiveCodePane.CodeModule

    'Parameter des markierten Bereichs ermitteln
    objCodePane.GetSelection lngStartLine, lngStartColumn, _
        lngEndLine, lngEndColumn#

    'Markierte Zeilen komplett einlesen
    strSelection = objCodeModule.Lines(lngStartLine, _
        lngEndLine - lngStartLine + 1)

    'Falls erste Zeile nicht komplett,
    'entsprechenden linken Teil abschneiden
    strSelection = Mid(strSelection, lngStartColumn)

    'Länge der letzten Zeile ermitteln
    lngLenLastLine = Len(objCodeModule.Lines(lngEndLine, 1))

    'Falls letzte Zeile nicht komplett,
    'entsprechenden rechten Teil abschneiden
    strSelection = Left(strSelection, _
        Len(strSelection) - lngLenLastLine + lngEndColumn - 1)

    GetSelection = strSelection

    Set objCodePane = Nothing
    Set objCodeModule = Nothing

End Function

Listing 17.8: Funktion zum Ermitteln des Inhalts des markierten Bereichs

Nächster Abschnitt:

17.5.11 In Modulen suchen

© 2006-2008 André Minhorst Alle Rechte vorbehalten.