STDIN e STDOUT
Introdução a Sub
rotinas Function
es através de variáveis de entrada
Public Sub A(ByRef B as String)
Pode ser reduzido para
Sub a(b$)
O Public
eByRef
chamadas são o padrão para o VBA e, portanto, implícitas, e podem (quase) sempre ser descartadas.
O tipo literal $
força b
a ser do tipoString
.
Outros literais de tipo
!
solteiro
@
Moeda
#
Duplo
%
Inteiro
$
Corda
&
Grandes
^
LongLong (somente 64 bits)
Além disso, é geralmente aceito que você possa deixar a variável de entrada como o tipo padrão Variant
e deixar os erros baseados em tipo sem tratamento. Por exemplo. Sub E(F)
no qual F
se espera que seja do tipo Boolean[]
(que seria passado para a rotina comoE Array(True, False, False)
)
Introdução a Sub
rotinas e funções imediatas da janela viaCells
O VBA não tem um console totalmente funcional e, portanto, não tem qualquer oficial STDIN, e, portanto, permite a alguns jogadas com entradas passantes.
No Excel, geralmente é aceito receber informações de uma célula ou intervalo de células, o que pode ser feito como
s=[A1]
que coloca implicitamente o .value
da célula [A1]
(que também pode ser referenciado comocells(1,1)
ourange("A1")
Exemplo de problema: Exibir a entrada em uma caixa de mensagens
Via Sub-rotina Sub A:msgbox[A1]:End Sub
Via janela Função msgbox[A1]
Introdução através de argumentos de compilação condicional
Os Projetos VBA suportam a tomada de argumentos na linha de comando ou nas Propriedades do VBAProject (veja através do explorador de projeto -> [Seu projeto VBA] - (Clique com o botão direito do mouse) -> Propriedades do VBAProject -> Argumentos de compilação condicionais)
Isso é amplamente útil para desafios de código de erro
Dado o argumento de compilação condicional n=
[some_value], isso permite executar o código que produzirá um código de erro, com base no valor de n
. note que isso exige uma adição de 2 bytes ao seu código para a n=
seção de argumentos de compilação condicional do Painel de Propriedades do VBAProject.
Código de exemplo
...
#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
...
Saída através do valor da função
Não há muito a dizer aqui, a forma geral de citar abaixo é tão compacta quanto possível.
Public Function A(b)
...
A=C
End Function
OBSERVAÇÃO: na grande maioria dos casos, é mais byte converter o método em uma sub-rotina e enviar para a janela do VBE imediatamente (veja abaixo)
Saída de Sub
rotinas Function
es através da janela do VBE Immediates
A saída para a janela imediata do VBE (também conhecida como janela de depuração do VBE) é um método de saída comum para o VBA para desafios baseados em texto; no entanto, é importante lembrar que a Debug.Print "Text"
chamada pode ser substancialmente prejudicada.
Debug.Print "Text"
é funcionalmente idêntico ao
Debug.?"Text"
como ?
formatação automática para Print
.
Saída de Sub
rotinas e funções da janela VBE Immediates através de outros métodos
Em raras ocasiões, quando a situação é certa, você pode receber informações de algumas das entradas mais triviais disponíveis para o VBA, como o ajustador de tamanho da fonte, o seletor de fontes e o zoom. (Por exemplo, emulando o seletor de tamanho de fonte do Word )