Procedury (podprogramy)

Pisząc dłuższe makro natrafimy na taki problem, że kod będzie dość długi (niektóre makra mają nawet kilkadziesiąt tysięcy linii kodu!). Pewne fragmenty kodu mogą być potrzebne w kilku różnych miejscach. Z tego powodu warto jest rozdzielić makro na kilka procedur (i funkcji). Dzięki temu nasz program zyska na czytelności. Każda procedura powinna wykonywać jedną konkretną czynność. Dodatkowo może się okazać w przyszłości, że niektóre z naszych procedur mogą zostać skopiowane do innego makra. Ciało procedury jest zawarte pomiędzy słowami kluczowymi SubEnd Sub. Poniższy kod prezentuje proste makro, w którym utworzyłem dwie pomocnicze procedury KolorujArkuszWypełnijArkuszDanymi. Procedura ProceduryPrzykład uruchamia po kolei te dwie procedury. Oczywiście wszystkie te instrukcji mogłyby być zawarte w jednej procedurze, jednak w miarę rozrastania się kodu warto jest przenosić pewne fragmenty kodu wykonujące niezależne od siebie czynności do osobnych procedur

Sub KolorujArkusz()
    Dim Licznik As Long
    
    For Licznik = 1 To 25
        Cells(Licznik, 1).Interior.Color = RGB(Licznik * 10, 0, 0)
    Next Licznik
End Sub

Sub WypełnijArkuszDanymi()
    Dim Licznik As Long
    
    For Licznik = 1 To 25
        Cells(Licznik, 2).Formula = Licznik
    Next Licznik
End Sub


Sub ProceduryPrzykład()
    KolorujArkusz
    WypełnijArkuszDanymi
End Sub