STDIN et STDOUT
Entrée dans les Sub
routines et les Function
s via des variables d'entrée
Public Sub A(ByRef B as String)
Peut être réduit à
Sub a(b$)
Le Public
etByRef
appels sont la valeur par défaut pour VBA et donc implicites, et peuvent (presque) toujours être supprimés.
Le type littéral $
oblige b
à être du typeString
.
Littéraux d'autres types
!
Célibataire
@
Devise
#
Double
%
Entier
$
Chaîne
&
Longue
^
LongLong (64 bits uniquement)
En outre, il est généralement admis que vous pouvez laisser la variable d'entrée comme type par défaut Variant
et laisser toute erreur basée sur le type non gérée. Par exemple. Sub E(F)
dans lequel F
on s'attend à être de type Boolean[]
(qui serait passé à la routine commeE Array(True, False, False)
)
Saisie des Sub
routines et des fonctions de fenêtre immédiate viaCells
VBA n'a pas de console entièrement fonctionnelle et n'a donc pas de STDIN officiel , et permet donc à certains lecture avec l' entrée de passage.
Dans Excel, il est généralement accepté de prendre des données à partir d'une cellule ou d'une plage de cellules, ce qui peut se faire comme
s=[A1]
qui met implicitement le .value
de la cellule [A1]
(qui peut également être référencé comme cells(1,1)
ourange("A1")
Exemple de problème: afficher l'entrée dans une boîte de message
Via Subroutine Sub A:msgbox[A1]:End Sub
Via la fonction de fenêtre Immediates msgbox[A1]
Saisie via des arguments de compilation conditionnelle
Les projets VBA prennent en charge la prise d'arguments à partir de la ligne de commande ou via les propriétés VBAProject (affichage via l'explorateur de projet -> [Votre projet VBA] - (clic droit) -> Propriétés VBAProject -> Arguments de compilation conditionnelle)
Ceci est largement utile pour les défis de code d'erreur
Étant donné l'argument de compilation conditionnelle n=
[some_value], cela permet d'exécuter du code qui produira un code d'erreur, basé sur la valeur de n
. notez que cela nécessite l'ajout de 2 octets à votre code pour la n=
section des arguments de compilation conditionnelle du volet Propriétés de VBAProject.
Exemple de code
...
#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
...
Sortie via la valeur de fonction
Pas grand-chose à dire ici, la forme générale de la citation ci-dessous est à peu près aussi compacte que possible.
Public Function A(b)
...
A=C
End Function
REMARQUE: dans la grande majorité des cas, il est préférable de convertir la méthode en sous-programme et de la sortir vers la fenêtre VBE Immediates (voir ci-dessous)
Sortie des Sub
routines et des Function
s via la fenêtre VBE Immediates
La sortie vers la fenêtre VBE Immediates (AKA la fenêtre de débogage VBE) est une méthode de sortie courante pour VBA pour les défis basés sur du texte, cependant, il est important de se rappeler que l' Debug.Print "Text"
appel peut être considérablement joué.
Debug.Print "Text"
est fonctionnellement identique à
Debug.?"Text"
comme ?
formats automatiques pour Print
.
Sortie à partir de Sub
routines et de fonctions de fenêtre VBE Immediates via d'autres méthodes
En de rares occasions, lorsque la situation est parfaite, vous pouvez prendre des données à partir de certaines des entrées les plus triviales disponibles pour VBA, telles que le réglage de la taille de police, le sélecteur de police et le zoom. (Par exemple, émulation du sélecteur de taille de police Word )