STDIN e STDOUT
Introduzione a Sub
routine et Function
tramite variabili di input
Public Sub A(ByRef B as String)
Può essere ridotto a
Sub a(b$)
Le chiamate Public
e ByRef
sono predefinite per VBA e quindi implicite e possono (quasi) essere sempre eliminate.
Le $
forze letterali del tipo b
devono essere del tipoString
.
Altri letterali di tipo
!
singolo
@
Moneta
#
Doppio
%
Numero intero
$
Corda
&
Lungo
^
LongLong (solo 64 bit)
Inoltre, è generalmente accettato che è possibile lasciare la variabile di input come tipo predefinito Variant
e lasciare non gestiti eventuali errori basati sul tipo. Per esempio. Sub E(F)
in cui F
ci si aspetta che sia di tipo Boolean[]
(che sarebbe passato alla routine comeE Array(True, False, False)
)
Inserimento di Sub
routine e funzioni della finestra immediata tramiteCells
VBA non ha una console completamente funzionale e quindi non ha alcun STDIN ufficiale , e quindi consente per alcuni gioco con il passaggio di ingresso.
In Excel, è generalmente accettato di prendere input da una cella o intervallo di celle, che può essere fatto come
s=[A1]
che inserisce implicitamente il .value
dalla cella [A1]
(che può anche essere indicato come cells(1,1)
orange("A1")
Esempio Problema: visualizzare l'input in una finestra di messaggio
Tramite la subroutine Sub A:msgbox[A1]:End Sub
Tramite la funzione Finestra immediata msgbox[A1]
Inserimento tramite argomenti di compilazione condizionale
I progetti VBA supportano l'acquisizione di argomenti dalla riga di comando o tramite le proprietà VBAProject (visualizza tramite Esplora progetti -> [Il tuo progetto VBA] - (clic destro) -> Proprietà VBAProject -> Argomenti di compilazione condizionale)
Questo è molto utile per sfide del codice di errore
Dato l'argomento della compilazione condizionale n=
[some_value] ciò consente di eseguire codice che produrrà un codice di errore, basato sul valore di n
. nota, ciò richiede un'aggiunta di 2 byte al codice per la n=
sezione degli argomenti di compilazione condizionale del riquadro delle proprietà di VBAProject.
Codice di esempio
...
#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
...
Emissione tramite il valore della funzione
Non c'è molto da dire qui, la forma generale di cui sotto è più o meno compatta.
Public Function A(b)
...
A=C
End Function
NOTA: nella stragrande maggioranza dei casi è più byte convertire il metodo in una subroutine e inviarlo alla finestra immediata di VBE (vedi sotto)
Emissione da Sub
routine et Function
tramite la finestra VBE Immediates
L'output alla finestra di VBE immediatamente (AKA la finestra di debug di VBE) è un metodo di output comune per VBA per sfide basate sul testo, tuttavia, è importante ricordare che la Debug.Print "Text"
chiamata può essere sostanzialmente giocata a golf.
Debug.Print "Text"
è funzionalmente identico a
Debug.?"Text"
come ?
formati automatici per Print
.
Emissione da Sub
routine e VBE immediatamente le funzioni della finestra tramite altri metodi
In rare occasioni, quando la situazione è giusta, puoi prendere input da alcuni degli input più banali disponibili per VBA come il regolatore della dimensione del font, il selettore del font e lo zoom. (Ad es. Emulazione del selettore della dimensione del carattere di Word )