Something like this. I've used an array to store the numbers, as a demo of one method. For two calls, you could enter the Call statement twice. You can use Call with parameters in brackets or just name the routine and list the parameter(s). eg

[VBA]
Sub Test
Call FillColBlanks(2)
FillColBlanks 4
End sub
[/VBA]



[VBA]
Option Explicit

Sub Test()
Dim arr, a
arr = Array(2, 4)
For Each a In arr
Call FillColBlanks(a)
Next
End Sub

Sub FillColBlanks(Col)
'by Dave Peterson 2004-01-06
'fill blank cells in column with value above
Dim wks As Worksheet
Dim rng As Range
Dim lastrow As Long
Set wks = ActiveSheet
With wks
'col = ActiveCell.Column
'Not reqd. Set rng = .UsedRange 'try to reset the lastcell
lastrow = .Cells.SpecialCells(xlCellTypeLastCell).Row
' Not reqd. Set rng = Nothing
On Error Resume Next
Set rng = .Range(.Cells(2, Col), .Cells(lastrow, Col)) _
.Cells.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "No blanks found"
Exit Sub
Else
rng.FormulaR1C1 = "=R[-1]C"
End If
'replace formulas with values
With .Cells(1, Col).EntireColumn
.Value = .Value
End With
End With
End Sub

[/VBA]