Das Direktfenster kann während der Testphase ständig geöffnet bleiben. Wenn das Arbeitsfenster so liegt, daß das Direktfenster nicht überdeckt wird, können die laufenden Ausgaben beobachtet werden.
Syntax: Debug.Print Ausdruck
Syntax:[Antwortvariable = ] MsgBox(prompt[, buttons] [, title] [, helpfile, context])
| Konstante | Wert | Beschreibung |
| vbOKOnly | Nur die Schaltfläche OK anzeigen. | |
| VbOKCancel | Schaltflächen OK und Abbrechen anzeigen. | |
| VbAbortRetryIgnore | Schaltflächen Abbruch, Wiederholen und Ignorieren anzeigen. | |
| VbYesNoCancel | Schaltflächen Ja, Nein und Abbrechen anzeigen. | |
| VbYesNo | Schaltflächen Ja und Nein anzeigen. | |
| VbRetryCancel | Schaltflächen Wiederholen und Abbrechen anzeigen. | |
| VbCritical | Meldung mit Stop-Symbol anzeigen. | |
| VbQuestion | Meldung mit Fragezeichen-Symbol anzeigen. | |
| VbExclamation | Meldung mit Ausrufezeichen-Symbol anzeigen. | |
| VbInformation | Meldung mit Info-Symbol anzeigen. | |
| VbDefaultButton1 | Erste Schaltfläche ist Standardschaltfläche. | |
| VbDefaultButton2 | Zweite Schaltfläche ist Standardschaltfläche. | |
| VbDefaultButton3 | Dritte Schaltfläche ist Standardschaltfläche. | |
| VbDefaultButton4 | Vierte Schaltfläche ist Standardschaltfläche. | |
| VbApplicationModal | An die Anwendung gebunden. Der Benutzer muß auf das Meldungsfeld reagieren, bevor er seine Arbeit mit der aktuellen Anwendung fortsetzen kann. | |
| VbSystemModal | An das System gebunden. Alle Anwendungen werden unterbrochen, bis der Benutzer auf das Meldungsfeld reagiert. |
Die erste Gruppe von Werten (0 - 5) beschreibt die Anzahl und den Typ der im Dialogfeld angezeigten Schaltflächen. Die zweite Gruppe (16, 32, 48, 64) beschreibt die Symbolart. Die dritte Gruppe (0, 256, 512) legt die Standardschaltfläche fest. Die vierte Gruppe (0, 4096) legt fest, in welcher Form das Dialogfeld gebunden ist. Verwenden Sie beim Addieren der Zahlen zu einem Gesamtwert für das Argument buttons nur eine Zahl aus jeder Gruppe.
| Konstante | Beschreibung | |
| vbOK | OK | |
| vbCancel | Abbrechen | |
| vbAbort | Abbruch | |
| vbRetry | Wiederholen | |
| vbIgnore | Ignorieren | |
| vbYes | Ja | |
| vbNo | Nein |
Ein Label kann nur eine "Aufschrift" besitzen, deshalb muß immer der ganze anzuzeigende Text zugewiesen werden. Bei Werteausgaben mit Bezeichnung muß man entweder der Bezeichnung, die immer wieder erscheinen soll, ein eigenes Label geben oder alternativ so vorgehen:
| vor der Berechnung: Form1.Label.Caption = "Gesamtpreis incl. MWSt = " nach der Berechnung: |
Das Textfeld kann immer nur einen Text enthalten. Deshalb muß der Text genauso aufbereitet werden, wie es oben beim Bezeichnungsfeld gezeigt ist. Wenn etwa das Ergebnis einer Rechenschleife angezeigt werden sollte, das zeilenweise anzuzeigen wäre, sähe das so aus:
| Form1.Text1.Text = "Ergebnis meiner Berechnung: " & vbCrLf For i = 1 to 100 Berechne i,Wert 'eine fiktive Funktion! nextForm1.Text1.Text = Form1.Text1.Text & i & " " & Wert & vbCrLf |
Das Textfeld kann auch für die Ausgabe längerer Texte benutzt werden. Dazu muß im Eigenschaftenfenster die Eigenschaft "MultiLine = true" gesetzt werden.
Wenn diese Eigenschaft gilt, dann kann das Textfeld auch mit horizontalen und/oder vertikalen Scrollbalken versehen werden (Eigenschaft "Scrollbars"). Daß es nicht mehr beschrieben werden kann, erreicht man mit "Locked = True".
Wenn der Text sehr lang wird, wenn er nämlich mehr als ca 65535 Zeichen enthält (Integer-Zählung) dann streikt das Textfeld. Weg mit ihm!
Es gibt einen Ausweg, das sog. Rtf-Textfeld, welches mehr als 2 Milliarden Zeichen darstellen kann, allerdings eigens geladen werden muß.
Dazu im Menü <Projekt>, <Komponenten...>, <Steuerelemente> wählen und dann "Microsoft Rich Textbox Control ..." anklicken und übernehmen. Man wechselt im Formular die Textbox gegen die Rtf-Box, nennt letztere so (Eigenschaft Name!), wie vorher die Textbox hieß, setzt die erforderlichen Attribute, fertig!
Noch zwei Anmerkungen zum Schluß:
1. Die beiden Textfeldtypen verhalten sich etwas unterschiedlich.
2. Wenn man einen langen Text, wie oben angegeben, stückchenweise erzeugt und ausgibt, verlangsamt sich die Ausgabe mit jeder hinzukommenden Zeile. Besser ist dann, einen String zusammenzuaddieren, der erst nach Abschluß der Berechnung angezeigt wird.
Das Listenfeld ist dazu bestimmt, Listen, also viele Einträge zu zeigen. Es kommt immer dann in Frage, wenn etwa das Ergebnis von Bearbeitungsschleifen dokumentiert werden soll. Es ist so voreingestellt, daß es automatisch Scrollbalken anlegt, wenn die Zahl der Einträge größer wird, als es der vorgesehene Platz zuläßt.
Auf die weiteren "Fähigkeiten" des Listenfeldes soll hier nur kurz hingewiesen werden. Dazu gehört insbesondere der Zugriff auf die Einträge mittels Mausklick.
Textausgaben können über das Printer-Objekt direkt an den Drucker erfolgen. Zur Druckereinstellung oder zum Start des Druckvorganges einer Grafik oder eines kompletten Dokuments nutzt man am besten einen Standarddialog. (Vgl. Standarddialoge: Drucken). Die Druckbefehle sind Methoden des Printer-Objekts. Über Einzelheiten sehe man in der Hilfe nach. Einfache Textausgaben erfolgen wie auf dem Debug-Fenster.
Code-Beispiel:
| Printer.Print "Dies ist die erste Zeile"'Druck mit Zeilenumbruch Printer.Print'ergibt eine Leerzeile Printer.Print "Dies ist die dritte "'Druck ohne Zeilenumbruch Printer.Print " Zeile"'Zeile 3 wird fertig gedruckt Printer.EndDoc'Dokumentenende, sofortiger Druck |
Grafikausgaben sind je nach Art der Grafik unterschiedlich zu behandeln.
1. Für Grafiken, die erst im Programm erzeugt ("gemalt") werden, gilt: Alle Grafikmethoden, die auf einem Formular oder einer PictureBox zum Aufbau einer Grafik ausgeführt werden, können auch auf das Printerobjekt angewandt werden. Siehe ein Beispiel dazu.
2. Geladene Bilddateien, etwa zur Verschönerung der Formulare, können ausgedruckt werden, indem man die Methode "PaintPicture" auf dem Printer-Objekt aufruft. Ein Aufruf zum Druck eines Bildes, das der Picture-Eigenschaft der PictureBox namens Picture1 auf dem Formular namens Form1 zugewiesen ist (alles klar?) könnte lauten:
| Printer.PaintPicture Form1.Picture1.Picture, 10, 10 Printer.EndDoc'Dokument drucken |
Die zweimal 10 sind hier Beispielkoordinaten für die linke obere Ecke auf dem Papier. PaintPicture läßt weitere, meist entbehrliche Parameter zu.
3. Schließlich gibt es noch eine berühmte Methode "Form1.PrintForm", die entweder vom Drucker nicht ausgeführt wird, oder keine guten Resultate liefert.
Es ist sicher günstig, noch ausstehende Druckerbefehle wenigstens aufzulisten.
| Eigenschaftsname | mögliche Werte | Erläuterung |
| Copies | Exemplarzahl | |
| CurrentX CurrentY | Positioniert folgende Ausgabe | |
| DrawMode DrawStyle DrawWidth | 1..16 0..6 1,2,.. | wie bei Picture-Ausgaben |
| DriverName | Druckername | |
| FillColor FillStyle | Farbwert 0..7 | wie bei Picture-Ausgaben |
| Font, FontSize, ... | Schrift, diverse Schrifteigenschaften | |
| hDC | von Windows vergeben | Handle-Nummer |
| Height Width | durch Scale-Methode skaliert | Abmessungen des bedruckbaren Bereiches |
| Orientation | 0 hoch, 1 quer | Bildlage Hoch- oder querformatig |
| ScaleMode | 0..10 | wie bie Picture-Ausgaben |
| ScaleHeight ScaleWidth | Grenzen des | |
| ScaleTop ScaleLeft | Koordinaten der linken oberen Ecke des Papiers | |
| TwipsPerPixelX TwipsPerPixelY | Anzahl der Twips pro Pixel horizontal und vertikal |