The overloading mechanism should be used in place of optional parameters for several reasons:

Noncompliant Code Example

Sub Notify(ByVal Company As String, Optional ByVal Office As String = "QJZ") ' Noncompliant

End Sub

Compliant Solution

Sub Notify(ByVal Company As String)
  Notify(Company, "QJZ")
End Sub

Sub Notify(ByVal Company As String, ByVal Office As String)

End Sub

Exceptions

The rule ignores non externally visible methods.