When I have a scenario like this, I generally have one method that actually does the work and has ALL of the parameters. Then each of my overrides calls it, but sets an empty string or a zero or whatever default value to the parms that it doesn't use. This way you have your 10 different versions of the method, but you really only have to maintain one method with the code that really does the work. Like this:
Public Overloads Sub MyMethod(ByVal strParm1 As String)
MyMethodWork(strParm1, String.Empty, 0)
End Sub
Public Overloads Sub MyMethod(ByVal strParm1 As String, ByVal strParm2 As String)
MyMethodWork(strParm1, strParm2, 0)
End Sub
Public Overloads Sub MyMethod(ByVal strParm1 As String, ByVal strParm2 As String, ByVal intParm3 As Integer)
MyMethodWork(strParm1, strParm2, intParm3)
End Sub
Private Sub MyMethodWork(ByVal strParm1 As String, ByVal strParm2 As String, ByVal intParm3 As Integer)
End Sub
Alternatively, you could just always call a method that has ALL of the parms and set default values when you are calling it. I do this more often than using overloads.
----- Update ----
You could also add these methods:
Public Overloads Sub MyMethod(ByVal intParm3 As Integer)
MyMethodWork(String.Empty, String.Empty, intParm3)
End Sub
Public Overloads Sub MyMethod(ByVal strParm1 As String, ByVal intParm3 As Integer)
MyMethodWork(strParm1, String.Empty, intParm3)
End Sub
But you can't have a method that passes strParm1 and intParm3 and then have ANOTHER method that passes strParm2 and intParm3. Because both methods would have a string parm and an integer parm so it won't know which one you are trying to call. So any combination as long as you don't double up on the data types.