
VBA/ProgrammierungÜberblick
Ermitteln des Windows-VerzeichnissesBeim Programmieren von Setup-Routinen und Ähnlichem ist es oft erforderlich das Windows-Verzeichnis des Rechners zu kennen. Um dem Anwender unnötige Eingaben zu ersparen können Sie es mit folgender Funktion ermitteln lassen. Dazu ist ein Aufruf einer Windows API-Funktion notwendig. Dies setzt voraus, daß die entsprechende DLL den im Makro enthaltenen Namen hat. Das folgende Listing ist deshalb nicht uneingeschränkt auch unter Windows 3.x und Windows NT lauffähig. Getestet wurde es unter Windows 95 mit Excel 7.0. Unter Windows 3.11 könnte die DLL zum Beispiel KERNEL.DLL heißen und die Funktion GetWindowsDirectory. Im Prinzip sollte der Code jedoch auch in höheren Windows-Versionen funktionieren. Vorsicht: Bitte speichern Sie alle geöffneten Dateien vor dem Test, ansonsten könnte ein Fehler beim Ausführungen zu Datenverlust führen. ListingPublic Declare Function _ Function Windowsverzeichnis() _ Sub WindowsDlg() Die DECLARE-Anweisung bereitet den Zugriff auf die API-Funktion GetWindowsDirectoryA vor. Sie ist unbedingt notwendig und muss am Modulanfang stehen. Die Funktion Windowsverzeichnis reserviert mit der Anweisung WINDIR=SPACE(255) einen ausreichenden Platz im Hauptspeicher, in dem das Windowsverzeichnis abgelegt wird. Anschließend wird das Verzeichnis ermittelt. Zum Testen führen Sie bitte die Prozedur WindowsDlg() aus. Hinweise zum Programmieren von Excel-Add-InsAdd-Ins sind kompilierte VBA-Makros, die mit Excel geladen und gestartet werden können, ohne dass die Module und Dialogblätter sichtbar sind. Wenn Sie eigene Add-Ins programmieren möchten sollten Sie die folgenden Regeln beachten. Diese lassen sich aus den Eigenschaften von Add-Ins ableiten. Thisworkbook.activate Das Objekt THISWORKBOOK können Sie selbstverständlich auch durch den Namen der Arbeitsmappe ersetzen, jedoch müssen Sie dann vor der Konvertierung die Endung "XLS" durch "XLA" ersetzten, was unter Umständen ein erheblicher Arbeitsaufwand ist. Aber auch dann verursacht eine solche Anweisung einen Laufzeitfehler. ListingSub Auto_open() Das Listing setzt voraus, dass die Iconleiste "DBAssi1" vorhanden ist und einen Button mit dem Index 1 enthält, dem die ebenfalls in der Arbeitsmappe enthaltene Prozedur Assi_starten zugewiesen wird. Arbeitsmappen in Add-Ins umwandelnSie können eine Arbeitsmappe in ein Add-In umwandeln, indem Sie aus dem Menü EXTRAS den Eintrag ADD-IN ERSTELLEN ... auswählen. Danach müssen Sie in einem Dialog das Verzeichnis und den Namen für das Add-In eingeben und auf die Schaltfläche SPEICHERN klicken. In neueren Versionen ist dieser Menüeintrag nicht vorhanden. In diesem Fall wählen Sie DATEI/SPEICHERN UNTER aus und wählen aus der Auswahlliste Dateityp den Eintrag "*.xla" aus. Achten Sie immer darauf die Original Excel-Datei (.XLS) aufzubewahren. Die benötigen Sie, falls Sie später den Code ändern möchten. Ausstatten der VBA-Anwendung mit Hilfe-DateienHilfedateien werden mit Hilfe eines Compilers wie jede andere ausführbare Datei erstellt. Dazu ist jedoch ein entsprechender Hilfecompiler erforderlich, der in der Regel nur mit Programmiersprachen wie C++, Delphi etc. mitgeliefert wird. In Excel ist er nicht enthalten, kann jedoch bei Microsoft gegen das entsprechende Geld angefordert werden. Das Erstellen von Hilfetexten soll jedoch nicht Thema dieses Artikels sein. Hier soll es vielmehr darum gehen, wie man vorhandene Hilfetexte in VBA-Anwendungen einbinden kann. ListingSub Hilfe() Die Methode HELP kann mit oder ohne Parameter aufgerufen werden. Als Parameter stehen die Eigenschaften HELPFILE und HELPCONTEXID zur Verfügung. HELPFILE legt die Hilfedatei fest, und HELPCONTEXTID bestimmt die Kontextnummer der Seite die angezeigt werden soll. ListingSub Hilfe_Seite2() Das Makro Hilfe_Seite2 ruft die zweite Seite der Hilfedatei "Test.HLP" auf. Die fehlerfreie Ausführung des Makros setzt natürlich voraus, dass diese Datei auch existiert und eine Seite mit der Kontextnummer 2 hat. Kennworteingabe in Excel 5/7/97Häufig werden in VBA-Anwendungen in Access oder Excel, Daten verarbeitet, die vor dem Zugriff nicht autorisierter Anwender geschützt werden müssen. Die einfachste Möglichkeit dieses Problem zu lösen ist die Abfrage eines Benutzerkennwortes das über einen entsprechenden Dialog eingegeben wird. Jede Version von Excel verfügt über andere Methoden zur Programmierung einer Kennworteingabe. In Excel 5.0 waren dazu noch keinerlei spezielle Funktionen vorhanden, daher muss für Excel 5.0 Makros alles selber programmiert werden. Dadurch wird die Kennworteingabe dort ziemlich langsam. Aber ab der Version 7.0 unterstützt Excel die Programmierung von Eingabefeldern zur Kennworteingabe durch eine spezielle Eigenschaft. Wie für diese drei Excel-Versionen Dialoge zur Kennworteingabe erstellt werden, zeigt der folgende Abschnitt. Kennworteingabe in Excel 5.0In Excel 5.0 ist zunächst ein Dialogblatt in die Arbeitsmappe einzufügen, auf dem dann ein Eingabefeld eingefügt werden muss, dem der Name "Kennwort" zu geben ist. ListingGlobal KW As String Die Prozedur Codierung_Kennwort muss dem Eingabefeld „Kennwort" als Ereignisprozedur zugewiesen werden. Sie wird dann immer ausgeführt, wenn ein Zeichen in dieses Feld eingegeben wird und wandelt dieses Zeichen in ein „*" um. Das Kennwort wird in der Variablen „KW" gespeichert und kann so nach Eingabe überprüft werden. Es ist notwendig, den Inhalt des Feldes „Kennwort" vor jeder Anzeige des Dialogs zu löschen, damit das Kennwort nicht schon dort steht und der Anwender damit die Anmeldung umgehen kann. Kennworteingabe in Excel 7.0Für Excel 7.0 ist der gleiche Dialog zu erstellen. Hier braucht jedoch die Prozedur Codierung_Kennwort nicht erstellt zu werden, da Excel nun für Eingabefelder die Eigenschaft „Kennwortfeld" zur Verfügung stellt. Diese wird gesetzt, indem das entsprechende Eingabefeld über den Eintrag „Steuerelement formatieren" des Kontextmenüs formatiert wird und in dem erscheinenden Dialog das Kontrollkästchen „Kennwortfeld" aktiviert wird. Aus Sicherheitsgründen sollte hier bereits beim Schließen des Dialogs der Inhalt des Feldes gelöscht werden, weil das Kennwort im Eingabefeld des Dialogblattes im Klartext erscheint und so sichtbar ist, sofern das Dialogblatt in der Arbeitsmappe nicht ausgeblendet wird oder die Arbeitsmappe als Add-In gespeichert wird. Kennworteingabe für Excel 97Zunächst muss ein Dialog erstellt werden, indem mit [Alt]+[F11] in die IDE von Excel gewechselt wird. Dort wird er mit Einfügen/UserForm erstellt. Die einzelnen Steuerelemente werden wie in den anderen Excel-Versionen eingefügt. Auch hier ist es sinnvoll dem Eingabefeld für das Kennwort einen geeigneten Namen zu geben, über den später auf das eingegebene Kennwort zugegriffen werden kann. Dazu muss das Eigenschaftenfenster eingeblendet werden, das über [F4] oder ANSICHT/EIGENSCHAFTENFENSTER geöffnet werden kann. Der Name eines Steuerelementes kann im Feld „Name" eingegeben werden. Soll ein Eingabefeld zur Kennworteingabe verwendet werden, dann muss dazu für die Eigenschaft „PasswordChar" ein Zeichen eingegeben werden, das die eingegebenen Zeichen automatisch ersetzt also z. B. ein „*". Weiterer Quelltext ist nicht notwendig. |
SonstigeÜberblick
Warum kann ich keine DFÜ-Verbindung in Windows erstellen und meine ISDN-Karte als Modem auswählen?Ich habe eine ISDN-Karte installiert und den CAPI-Treiber installiert. Dennoch kann ich keine DFÜ-Verbindung in Windows erstellen, weil ich kein Modem auswählen kann. Die CAPI-Treiber dienen nur dazu, dass Programme die ISDN unterstützen, die ISDN-Karte verwenden können, um Verbindungen aufzubauen und spezielle ISDN-Funktionen zu nutzen. Bei Programmen die eigentlich nur Modems unterstützen, wie die DFÜ-Verbindung von Windows 95/98 und der RAS von Windows NT haben Sie das Problem, dass diese Programme erwarten, dass sich das Modem an einem Com-Port befindet. Selbst wenn Sie also in der DFÜ-Verbindung ein Modem auswählen könnten, müssten Sie anschließend einen Com-Port wählen, an dem sich das "Modem" befindet. Eine ISDN-Karte ist jedoch nicht an einem Com-Port angeschlossen. Warum leuchtet die Lampe am Diskettenlaufwerk auch wenn kein Zugriff auf die Diskette stattfindet?Entweder ist das Diskettenlaufwerk defekt, oder was wahrscheinlicher ist, das Flachbandkabel steckt falsch auf dem Anschluss am Diskettenlaufwerk. Pin 1 des Kabels muss auf Pin 1 des Steckers am Laufwerk stecken. Am Laufwerk ist Pin 1 meist beschriftet. In der Regel befindet sich Pin 1 auf der Seite, an der der Strom-Anschluss des Laufwerks liegt. Wenn Sie das Kabel richtig herum aufgesteckt haben sollte die Lampe nach dem Booten ausgehen und nur noch bei Diskettenzugriffen leuchten. Wo ist an den Kabeln Pin 1?Beim Einbau von CD-Rom-Laufwerken, Diskettenlaufwerken oder Festplatten ist es wichtig sowohl die Flachbandkabel als auch die Stromkabel richtig herum anzuschließen. Bei den Stromkabeln ist es in der Regel so, dass sich der Stecker nur in eine Richtung aufstecken lässt. Anders sieht das bei den Flachbandkabeln aus. Häufig können Sie dort das Kabel beliebig anschließen. Dann ist es wichtig zu wissen, wo am Kabel Pin 1 ist, da Pin 1 des Kabels auf Pin 1 des Steckers am Laufwerk gesteckt werden muss. Am Laufwerk ist Pin 1 meist mit der Zahl 1 beschriftet oder auf der anderen Seite des Steckers ist Pin 32 beschriftet. Am Flachbandkabel ist Pin 1 am Kabel markiert. Meist ist die Ader des Kabels rot markiert seltener auch grün. An dieser Seite des Kabels ist am Stecker Pin 1. Warum wird meine zweite Festplatte bzw. das CD-Rom nicht gefunden?Ich habe an einem Flachbandkabel an dem sich zuvor schon eine Festplatte befand eine zweite Festplatte (bzw. ein CD-Rom) angeschlossen und dieses Gerät auf Slave gejumpert. Trotzdem wird das Laufwerk beim Booten nicht gefunden. Dafür kann es mehrere Ursachen geben. Im BIOS ist die Festplatte bzw. das CD-Rom-Laufwerk nicht eingetragen. (Die folgende Beschreibung wurde anhand eines Award-BIOS erstellt. Bei einem anderen Bios können sich geringe Abweichungen ergeben. Ziehen Sie gegebenenfalls Ihr Handbuch zu Rate.) Gehen Sie folgendermaßen vor:
Wird das Laufwerk dann immer noch nicht gefunden, sollten Sie in Erwägung ziehen, dass das Flachbandkabel defekt, oder das Laufwerk nicht in Ordnung ist. Warum funktionieren nach dem Wechseln des Mainboards die seriellen Anschlüsse nicht?Einige Mainboard-Hersteller (z.B. Shuttle (Spacewalker), Soyo ...) verwenden spezielle Kabel für die seriellen Ports. Verwenden Sie stattdessen Standardkabel, kann es sein, dass die Geräte an diesen Anschlüssen nicht gefunden werden. Sie sollten daher bei einem Mainboardwechsel immer auch die mit dem Mainboard mitgelieferten Kabel verwenden. Haben Sie die richtigen Kabel verwendet, prüfen Sie ob die Stecker auch richtig herum stecken - Pin 1 auf Pin 1. Warum werden mit dem neuen Mainboard die Festplatten nicht gefunden?Manche Mainboard-Hersteller (z.B. Shuttle(Spacewalker), Soyo ...) verwenden spezielle Flachbandkabel für Festplatten und/oder Diskettenlaufwerke. Verwenden Sie statt der Originalkabel die beim Mainboard dabei sind, die Kabel Ihres alten Boards, kann das zu verschiedenen Problemen führen, entweder weil Ihr altes Board spezielle Kabel hatte oder Ihr neues. Auch wenn beide Spezialkabel verwenden, können diese unterschiedlich sein. Optisch lässt sich das nicht feststellen. Anhaltspunkte für falsche Kabel sind folgende Fehler:
Warum wird meine Fast-Ethernetkarte nicht gefunden bzw. warum kann ich den Treiber nicht installieren?Beim Installieren des Treibers meldet dieser, dass die Netzwerkkarte nicht gefunden werden kann. Installiere ich einen anderen, kompatiblen Treibern funktioniert dies zwar, beim Neustart bekomme ich aber eine Fehlermeldung der Netzwerkprotokolle und die Meldung, dass die Netzwerkkarte nicht gefunden wurde. Ältere Pentium Boards haben oft nur einen Bus-Master-fähigen PCI-Slot manche auch gar keinen. PCI-Netzwerkkarten benötigen aber einen Bus-Master-fähigen Slot. Ermitteln Sie über das Mainboard-Handbuch welchen PCI-Slot Sie verwenden müssen. Falls das Board keinen Bus-Master hat, werden Sie die Fast-Ethernetkarte nicht zum Laufen bekommen. Da hilft nur eine ISA-Karte oder ein neues Mainboard. Warum kann ich von Laufwerk A: nicht booten?Sie haben entweder im BIOS die falsche Bootreihenfolge eingestellt oder das Diskettenlaufwerk am falschen Stecker des Flachbandkabels angeschlossen. Was ist beim Einbau von AGP-Grafikkarten zu beachten?Wenn AGP-Grafikkarten nicht ganz tief im Slot sitzen, kommt es zu Kurzschlüssen. Daher muss man sie beim Einbau fest eindrücken. Warum fehlt bei meinem 17"-Monitor das Kaltgeräte-Verbindungskabel zum Rechner?Weil alle Monitore die größer als 15" sind nicht mehr am Rechner sondern separat an einer Steckdose angeschlossen werden sollten. Sie müssen dann den Monitor auch separat ein- und ausschalten. Mein Monitor kommt aus dem Energiesparmodus nicht mehr zurück, der Bildschirm bleibt schwarz!Wenn der Monitor nach der vorgegebenen Zeit in den Energiesparmodus schaltet und ich dann eine Taste drücke oder mit der Maus klicke,
|
SonstigeÜberblick
Was kann ich tun, wenn Windows NT nicht alle Komponenten korrekt erkennt und installiert?Starten Sie die Installation von Windows NT mit den notwendigsten Komponenten, also z.B. nur mit der Grafikkarte und dem SCSI-Controller falls daran Ihre Festplatten oder das CD-Rom angeschlossen ist. Erst wenn die Installation fertig ist, fügen Sie nach und nach die anderen Karten hinzu. Nach jeder Karte starten Sie NT und installieren den Treiber für die Karte. Windows findet die Fritz-Card nicht!Nach der Installation der Fritz-Treiber und der Software meldet Windows bei jedem Start, es könnte die ISDN-Karte nicht finden! In diesem Fall haben Sie wahrscheinlich erst die Fritz-Card (ISA) in den Rechner gesteckt und dann die Treiber und die Software installiert. Das ist die falsche Reihenfolge. Gehen Sie folgendermaßen vor um das Problem zu beheben.
Nach Änderungen einer BIOS-Einstellungen bleibt der Bildschirm dunkel und der Rechner piept nur noch!Es gibt ältere Pentium-Mainboards, bei denen man im BIOS die PCI-Slots abschalten konnte. Haben Sie eine PCI-Grafikkarte, könnte dies die Ursache sein. Wenn Sie versehentlich die PCI-Slots abgeschaltet haben, findet der Rechner nun keine Grafikkarte mehr. Für dieses Problem gibt es nur zwei Lösungen:
Warum bekomme ich immer ein Besetzt-Zeichen, wenn ich versuche mit meinem OfficeJet zu wählen?Haben Sie den Office-Jet an eine Telefonanlage angeschlossen und müssen eine 0 oder eine andere Ziffer vorwählen um nach auswärts zu telefonieren, sollten Sie nach der 0 eine Wahlpause eingeben. Dann funktioniert die Anwahl in der Regel. Bei der Installation meines Druckertreibers meldet dieser, dass der Drucker nicht gefunden wurde!Die meisten neueren Drucker benötigen einen EPP-Parallelport. Diesen müssen Sie im BIOS einstellen. Geht dies nicht, hat Ihr Mainboard keinen solchen Druckerport. Abhilfe schafft ein zusätzlicher LPT-Port, den Sie als ISA-Karte in Ihren Rechner einstecken können. Achten Sie beim Kauf aber darauf, dass die Karte den EPP-Modus unterstützt. Sonst sind Sie auch nicht besser dran als vorher. Kann ich unterschiedliche Simm-Module auf einer Simm-Bank verwenden?Simm-Module verschiedener Hersteller können auf einer Simm-Bank verwendet werden, wenn das Mainbaord eine recht gutmütige Speicherverwaltung hat, wie die Spacewalker-Mainboards. Die meisten Mainboards nehmen es damit aber sehr genau und erwarten gleiche Module auf einer Bank.
Warum läuft nach dem Einbau meines ATX-Mainboards der Rechner nicht an?Sie haben wahrscheinlich vergessen den Stecker vom Netzteil auf das Mainboard zu stecken. ATX-Netzteile haben zusätzlich zum Stromstecker für das Mainboard noch einen zusätzlichen Stecker, der dafür sorgt, dass das Mainboard anläuft. Der entsprechende Anschluss auf dem Board ist auf den meisten Boards mit ATX PWR Switch beschriftet. Auf dieser Seite finden Sie Antworten auf häufig gestellte Fragen. Wir haben Sie nach besten Wissen und Gewissen zusammengestellt. Die Antworten spiegeln in der Regel unsere Erfahrungen wieder, sind aber sicher nicht absolut immer gültig. Mein Joystick funktioniert nicht!Wenn ich versuche einen Joystick oder ein Gamepad an den Gameport meiner Soundblasterkarte anzuschließen, wird in der Spielsteuerung (Systemsteuerung/Spielsteuerungen) von Windows 95/98 als Status "Nicht verbunden" angezeigt obwohl der Stecker richtig steckt und der Joystick in Ordnung ist. Dies kann mehrere Ursachen haben. Versuchen Sie nacheinander die folgenden Ursachen auszuschließen.
Wie aktiviere ich den Gameport?Einige Soundblaster-Karten haben einen Jumper, um den Gameport zu aktivieren oder zu deaktivieren. Dieser befindest sich meist in der Mitte der Karte und ist mit "YEn" beschriftet. Um den Gameport zu aktivieren gehen Sie folgendermaßen vor:
Was ist eigentlich ein Jumper?Ein Jumper besteht aus zwei oder mehreren Kontakten, die mit einer Brücke (meist auch als Jumper bezeichnet) geschlossen werden können. Dabei werden immer zwei Kontakte verbunden. Durch die verschiedenen Möglichkeiten werden Einstellungen für die PC-Karte oder das Mainboard gemacht. Per Jumper werden bspw. Taktfrequenz und Multiplier für CPU's auf dem Mainboard eingestellt, oder IRQ's und Adressen für Grafikkarten, Soundkarten etc. bestimmt. Auf Controllern können mit Hilfe von Jumpern Schnittstellen abgeschaltet (disabled) oder aktiviert (enabled) werden. Bei Festplatten dienen Jumper dazu, festzulegen, ob die Festplatte als Master, Single oder Slave montiert wird.
|
(c) 2005, Spona & Kößling GbR, alle Inhalte sind urheberrechtlich geschützt