Why is this an issue?

Unused parameters are misleading. Whatever the values passed to such parameters, the behavior will be the same.

This rule raises an issue when a private procedure of a Class, Module or Structure takes a parameter without using it.

Noncompliant code example

Private Sub DoSomething(ByVal a As Integer, ByVal b as Integer) ' "b" is unused
    Compute(a)
End Sub

Private Function DoSomething2(ByVal a As Integer, ByVal b As Integer) As Integer ' "a" is unused
    Compute(b)
    Return b
End Function

Compliant solution

Private Sub DoSomething(ByVal a As Integer)
    Compute(a)
End Sub

Private Function DoSomething2(ByVal b As Integer) As Integer
    Compute(b)
    Return b
End Function

Exceptions

This rule doesn’t raise any issue in the following contexts: