Niedawno przeczytałem w mądrej książce Makrodefinicje Stevena Romana krótki wywód na temat odróżniania parametrów od argumentów. Autor pisze, że część programistów (nie tylko VBA) używa tych pojęć zamiennie, nie widząc między nimi żadnej różnicy.
Definicje Pojęć
Przyznam, że przed przeczytaniem tej notki też należałem do grupy nieuświadomionych. Wbrew pozorom pojęcia te różnią się od siebie i trzeba wiedzieć na czym ta różnica polega.
Najogólniej mówiąc parametr jest czymś w rodzaju zmiennej podanej w funkcji, natomiast argument – jej wartością. Brzmi tajemniczo? Rozróżnienie jest jednak bardzo proste.
Przykład
Weźmy pod uwagę prostą funkcję, która sprawdza ile arkuszy typu Worksheet zawiera podany skoroszyt. Poniżej znajduje się funkcja i wywołujące je makro.
Function PoliczArkusze(sNazwaPliku As String) As Integer
On Error Resume Next
PoliczArkusze = Workbooks(sNazwaPliku).Worksheets.Count
On Error GoTo 0
End Function
Sub MakroGlowne()
Dim iArkusze As Integer
iArkusze = PoliczArkusze("Stawki.xlsx")
End Sub
Patrząc na kod, rodzi się pytanie – czym jest zmienna sNazwaPliku użyta w funkcji… Jest to parametr procedury, który powinien zawierać zmienną lub stałą łańcuchową.
Czym zatem jest argument? Argument jest wartością, która będzie używana w miejsce parametru w momencie wywołania funkcji. Czyli argumentem będzie tutaj słowo Stawki.xlsx.
Wniosek
Autor kończy swój wywód ważnym wnioskiem, z którym nie sposób się nie zgodzić.
Brak rozróżnienia między parametrem a argumentem przypomina brak rozróżnienia między zmienną, a jej wartością!