STDIN i STDOUT
Wprowadzanie do Sub
procedur is Function
za pomocą zmiennych wejściowych
Public Sub A(ByRef B as String)
Można zmniejszyć do
Sub a(b$)
Public
I ByRef
rozmowy są domyślne dla VBA i tym samym implicite, a może (prawie) zawsze zostać pominięte.
Literał typu $
wymusza b
na nim typ String
.
Literały innego rodzaju
!
Pojedynczy
@
Waluta
#
Podwójnie
%
Liczba całkowita
$
Strunowy
&
Długo
^
LongLong (tylko wersja 64-bitowa)
Ponadto ogólnie przyjmuje się, że można pozostawić zmienną wejściową jako typ domyślny Variant
i pozostawić wszelkie błędy związane z typem bez obsługi. Na przykład. Sub E(F)
w którym F
oczekuje się, że będzie typu Boolean[]
(który zostałby przekazany do procedury podobnej doE Array(True, False, False)
)
Wprowadzanie do Sub
procedur i natychmiastowych funkcji okna za pośrednictwemCells
VBA nie ma w pełni funkcjonalnej konsoli, a zatem nie ma oficjalnego STDIN, a zatem pozwala niektóre grę z przekazywaniem danych wejściowych.
W programie Excel ogólnie przyjmuje się dane wejściowe z komórki lub zakresu komórek, co można zrobić podobnie
s=[A1]
która niejawnie umieszcza .value
komórkę [A1]
(która może być również określana jako cells(1,1)
lubrange("A1")
Przykład problemu: wyświetl dane wejściowe w oknie komunikatu
Poprzez podprogram Sub A:msgbox[A1]:End Sub
Za pośrednictwem natychmiastowej funkcji okna msgbox[A1]
Wprowadzanie za pomocą argumentów warunkowej kompilacji
Projekty VBA obsługują pobieranie argumentów z wiersza poleceń lub właściwości VBAProject (widok za pomocą eksploratora projektu -> [Twój projekt VBA] - (Kliknij prawym przyciskiem myszy) -> Właściwości VBAProject -> Argumenty warunkowej kompilacji)
Jest to w dużej mierze przydatne w przypadku wyzwań związanych z kodami błędów
Biorąc pod uwagę argument warunkowej kompilacji n=
[some_value] pozwala to na wykonanie kodu, który wygeneruje kod błędu na podstawie wartości n
. uwaga: wymaga to dodania 2 bajtów do kodu n=
w sekcji argumentów kompilacji warunkowej w panelu właściwości VBAProject.
Przykładowy kod
...
#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
...
Wyprowadzanie przez wartość funkcji
Nie wspominając już o tym, ogólna forma cytowania poniżej jest tak zwarta, jak to tylko możliwe.
Public Function A(b)
...
A=C
End Function
UWAGA: w zdecydowanej większości przypadków konwersja metody na podprogram jest bardziej bajtowa, a wyjście do okna natychmiastowego VBE (patrz poniżej)
Wyjście z Sub
procedur is Function
za pośrednictwem okna natychmiastowego VBE
Wyjście do okna natychmiastowego VBE (AKA to okno debugowania VBE) jest powszechną metodą wyjściową dla VBA dla wyzwań opartych na tekście, jednak ważne jest, aby pamiętać, że Debug.Print "Text"
połączenie może być znacznie golfowane.
Debug.Print "Text"
jest funkcjonalnie identyczny z
Debug.?"Text"
jako ?
autoformatowanie do Print
.
Wyprowadzanie z Sub
procedur i VBE Immediates funkcje okna za pomocą innych metod
W rzadkich przypadkach, gdy sytuacja jest w porządku, możesz wziąć dane z niektórych bardziej trywialnych danych wejściowych dostępnych dla VBA, takich jak regulacja rozmiaru czcionki, wybór czcionki i powiększenie. (Np. Emulowanie selektora rozmiaru czcionki Word )