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 Sub a End Sub. Poniższy Listing prezentuje proste makro, w którym utworzyłem dwie pomocnicze procedury KolorujArkusz i WypełnijArkuszDanymi. Procedura ProceduryPrzykład uruchamia po kolei te dwie procedury. Oczywiście wszystkie te instrukcje 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