STDIN und STDOUT
Eingabe in Sub
Routinen und Function
s über Eingabevariablen
Public Sub A(ByRef B as String)
Darf reduziert werden auf
Sub a(b$)
Die Aufrufe Public
und ByRef
sind die Standardeinstellung für VBA und daher implizit und können (fast) immer verworfen werden.
Das Typliteral $
erzwingt b
den Typ String
.
Andere Typliterale
!
Single
@
Währung
#
Doppelt
%
Ganze Zahl
$
String
&
Lange
^
LongLong (nur 64 Bit)
Darüber hinaus wird allgemein akzeptiert, dass Sie die Eingabevariable als Standardtyp Variant
belassen und typbasierte Fehler unbehandelt lassen können. Z.B. Sub E(F)
in dem F
erwartet wird, dass er vom Typ ist Boolean[]
(der wie folgt an die Routine übergeben wird E Array(True, False, False)
)
Eingabe in Sub
Routinen und Direktfensterfunktionen überCells
VBA hat keine voll funktionsfähige Konsole und daher keine offizielle STDIN und ermöglicht daher ein gewisses Spiel mit der Weitergabe von Eingaben.
In Excel ist es allgemein akzeptiert, Eingaben von einer Zelle oder einem Zellbereich zu übernehmen, wie dies auch geschehen kann
s=[A1]
die implizit die .value
aus der Zelle [A1]
(die auch als cells(1,1)
oder verwiesen werden kannrange("A1")
Beispiel Problem: Zeigen Sie die Eingabe in einer Messagebox an
Über Unterprogramm Sub A:msgbox[A1]:End Sub
Über die Sofortfensterfunktion msgbox[A1]
Eingabe über bedingte Kompilierungsargumente
VBA-Projekte unterstützen die Übernahme von Argumenten über die Befehlszeile oder über die VBAProject-Eigenschaften (Ansicht über den Projektexplorer -> [Ihr VBA-Projekt] - (Rechtsklick) -> VBAProject-Eigenschaften -> Bedingte Kompilierungsargumente).
Dies ist vor allem bei Fehlercode-Herausforderungen hilfreich
Mit dem Argument n=
für bedingte Kompilierung [some_value] kann Code ausgeführt werden, der einen Fehlercode erzeugt, der auf dem Wert von basiert n
. Beachten Sie, dass dies ein Hinzufügen von 2 Byte zu Ihrem Code für den n=
Abschnitt mit den bedingten Kompilierungsargumenten des VBAProject-Eigenschaftsfensters erfordert.
Beispielcode
...
#If n=3 then
return '' Produces error code '3', Return without GoSub
#ElseIf n=20 then
resume '' Produces error code '20', Resume without Error
#EndIf
...
Ausgabe über Funktionswert
Es ist hier nicht viel zu sagen, dass die im Folgenden zitierte allgemeine Form so kompakt ist, wie sie hergestellt werden kann.
Public Function A(b)
...
A=C
End Function
HINWEIS: In den allermeisten Fällen ist es mehr Byte, die Methode in eine Unterroutine umzuwandeln und an das VBE-Direktfenster auszugeben (siehe unten).
Ausgabe von Sub
Routinen und Function
s über das VBE- Direktfenster
Die Ausgabe in das VBE-Direktfenster (AKA, das VBE-Debug-Fenster) ist eine übliche Ausgabemethode für VBA für textbasierte Herausforderungen. Es ist jedoch wichtig zu bedenken, dass der Debug.Print "Text"
Anruf möglicherweise im Wesentlichen ausgenutzt wird.
Debug.Print "Text"
ist funktional identisch mit
Debug.?"Text"
als ?
autoformate zu Print
.
Ausgabe von Sub
Routinen und VBE- Direktfensterfunktionen über andere Methoden
In seltenen Fällen, in denen die Situation genau richtig ist, können Sie Eingaben von einigen der trivialeren Eingaben für VBA abrufen, z. B. von der Einstellung der Schriftgröße, der Schriftauswahl und dem Zoom. ( Z. B. Emulieren der Wort-Schriftgrößenauswahl )