Zu 2): Woher weiß ich denn welche Methoden existieren? Bzw. wo kann ich mir das ausgeben lassen?
Zum einen gibt es den Objektkatalog. Diesen kann man, wärend man sich im VBA-Editor befindet, mit der F2-Taste aufrufen (alterantiv unter Menü Ansicht -> Objektkatalog) und darin browsen bzw. etwas über eine Eingabe suchen (mit F1 bekommt man zur aktuellen Auswahl Hilfe angezeigt).
Manchmal geben Funktionen/Methoden auch nur den Datentyp Objekt zurück. Man kann mit TypeName(VarName) oder auch mit VarType(VarName) deren Typ herausfinden. Hier bietet es sich oft an in dieser Zeile einen Haltepunkt zu setzen und sich dann im Direktbereich diesen ausgeben zu lassen - der Direktbereich ist, wie viele nicht wissen, nicht nur Ausgabe, sondern dient auch der Eingabe von Anweisungen.
Beispiel, man hat folgendn Code geschrieben:
Sub test()
Dim obj As Object
Set obj = ActiveSheet
If Not obj Is Nothing Then '<- Haltepunkt in dieser Zeile setzen
'mach irgendwas...
End If
End Sub
Nun hat man den Haltepunkt gesetzt und führt das Makro aus. Er bleibt in besagter Zeile stehen. Wir wollen jetzt wissen welchen Objekt-Datentyp obj hat.
Also gibt man im Direktbereich (ggf. mit STRG+G einblenden, od. Menü Ansicht -> Direktfenster) folgendes ein und bestätigt die Eingabe (wie gewohnt mit Return-Taste):
?TypeName(obj)
Eine Zeile darunter schreibt er dann das Ergebnis hin. In diesem kurzen Beispiel wird es entweder "Worksheet", "Chart" oder im seltensten Fall Nothing sein (Nothing begegnet man an der Stelle idR. nur wenn man AddIns schreibt).
Dir ist beim Tippen bestimmt auch schon aufgefallen das wenn du nach einer Variable - welche ein Objekttyp darstellt, z.B. Range - einen Punkt setzt, dir eine Liste mit Elementen zur Auswahl angeboten wird (gleichzeitig verbirgt sich eine Autovervollständigung dahinter, für die Tippfaulen - ich bin faul!!). Diese eingeblendete Liste läuft unter dem Begriff "IntelliSense". Auch wärend du weiter tippst zeigt es dir verschiedene Informationen an (erwartete Parameternamen der Funktion, deren jeweiligen Datentypen, den Datentyp der Rückgabe der Funktion). Auch das hilft ungemein dabei den Überblick über die Datentypen zu behalten (eines der wichtigsten Dinge beim Programmieren).
Dieses IntelliSense funktioniert aber nur solange wie der Datentyp der jeweils letzten Referenz (am einfachsten gesagt der Variable selbst) bekannt ist (darum u.a. der "Spaß" mit den Dim-Anweisungen). Nur dann kann dieses IntelliSense wirklich intelligent (=Intelli) seine Sinne (=Sense) spielen lassen. ;o)
Jetzt rutsch ich schon ins Debugging ab, worüber es sich noch einiges sagen ließe, aber das soll es an der Stelle mal gewesen sein. Das wichtigste wurde erwähnt.
Zu 3): Habe quasi versucht auf einem toten Pferd zu reiten :)
So kann man das auch formulieren. ;-)
Gruß
|