MarcinAu
MarcinAu

Reputation: 612

VBA returning error when calling a Sub with multiple parameters

I'm trying to figure out why VBA is returning an error (Compile error: Expected: =) when I call a Subroutine and supply it with multiple parameters.

Sub customerController(cleanStructure As Boolean, firstCol As Integer, latCol As Integer, _
                    lngCol As Integer, Optional startRow As Long, Optional endRow As Long)
                    
Dim i As Long, j As Long, n As Long

If (cleanStructure = False) Then
    'customer data type
    If (startRow = "") Then i = 1
    If (endRow = "") Then j = countRows
    For n = i To j - i + 1
        generateURL(n, firstCol)
        newReadXMLData (url)
        ActiveSheet.Cells(i, latCol).Value = lat
        ActiveSheet.Cells(i, lngCol).Value = lng
    Next
End If

End Sub

The Subroutine that I'm calling requires two parameters:

Sub generateURL(row As Long, column As Long)

Upvotes: 21

Views: 43777

Answers (1)

brettdj
brettdj

Reputation: 55672

When calling more than 1 parameter (i.e. just generateURL(n) works) you need to either use

  • Call generateURL(n, firstCol) , or
  • generateURL n, firstCol

using Call is the better programming technique as it is clearer

As per MSDN:

You normally use the Call statement to call a procedure that does not return a value. If the procedure returns a value, the Call statement discards it. You are not required to use the Call statement when calling a procedure. However, it improves the readability of your code.

Upvotes: 45

Related Questions