STDIN и STDOUT
Ввод в Subподпрограммы и Functions через входные переменные
Public Sub A(ByRef B as String)
Может быть уменьшено до
Sub a(b$)
PublicиByRef звонки по умолчанию для VBA и , таким образом , неявно, и может (почти) всегда быть отброшен.
Тип буквальный $заставляет bбыть типаString .
Другие литералы типа
! не замужем
@ валюта
# двойной
% целое число
$ строка
& Длинная
^ LongLong (только 64 бит)
Кроме того, общепринято, что вы можете оставить входную переменную в качестве типа по умолчанию Variantи оставить любые ошибки на основе типов необработанными. Например. Sub E(F)в котором, Fкак ожидается, будет иметь тип Boolean[](который будет передан в рутину, какE Array(True, False, False) )
Ввод в Sub подпрограммы и функции непосредственного окна черезCells
VBA не имеет полностью функциональной консоли и, следовательно, не имеет никакого официального STDIN, и, следовательно, позволяет некоторые игру с передачей ввода.
В Excel, как правило, принято принимать данные из ячейки или диапазона ячеек, что может быть сделано как
s=[A1]
который неявно помещает .valueиз ячейки [A1](на которую также можно ссылаться как cells(1,1)илиrange("A1")
Пример проблемы: отображение ввода в окне сообщения
Через подпрограмму Sub A:msgbox[A1]:End Sub
Через функцию окна Immediates msgbox[A1]
Ввод с помощью аргументов условной компиляции
Проекты VBA поддерживают получение аргументов из командной строки или через свойства VBAProject (просмотр через проводник проекта -> [Ваш проект VBA] - (Правый клик) -> Свойства VBAProject -> Аргументы условной компиляции)
Это в значительной степени полезно для вызовов кода ошибок
Учитывая аргумент n=условной компиляции [some_value], это позволяет выполнять код, который будет выдавать код ошибки, основанный на значении n. обратите внимание, это требует добавления 2-х байтов к вашему коду n=в разделе аргументов условной компиляции панели свойств VBAProject.
Пример кода
...
#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
...
Вывод через значение функции
Не очень, чтобы сказать здесь, общая форма, приведенная ниже, настолько компактна, насколько это возможно.
Public Function A(b)
...
A=C
End Function
ПРИМЕЧАНИЕ: в подавляющем большинстве случаев метод преобразования байта в подпрограмму и его вывод в окно немедленного использования VBE выполняется более подробно (см. Ниже).
Вывод из Subподпрограмм и Functions через окно VBE Immediates
Вывод в окно немедленного использования VBE (AKA - окно отладки VBE) является распространенным методом вывода для VBA для текстовых задач, однако важно помнить, что Debug.Print "Text"вызов может быть в значительной степени обработан.
Debug.Print "Text"
функционально идентичен
Debug.?"Text"
в качестве ?автоформатов Print.
Вывод из Subподпрограмм и функций окна VBE Immediates с помощью других методов
В редких случаях, когда ситуация просто правильная, вы можете использовать входные данные из некоторых более тривиальных входов, доступных для VBA, таких как регулятор размера шрифта, селектор шрифта и масштабирование. (Например, эмуляция селектора размера шрифта Word )