Inspection Details

UseOfUnboundBangNotation


Summary
Identifies the use of bang notation, formally known as dictionary access expression, for which the default member is not known at compile time.
Reasoning
A dictionary access expression looks like a strongly typed call, but it actually is a stringly typed access to the parameterized default member of the object. This is especially misleading the default member cannot be determined at compile time.
The following code example(s) would trigger this inspection:

Public Function MyName(ByVal rst As Object) As Variant
    MyName = rst!Name.Value
End Function

Public Function MyName(ByVal rst As Variant) As Variant
    With rst
        MyName = !Name.Value
    End With
End Function

The following code example(s) would not trigger this inspection:

Public Function MyName(ByVal rst As ADODB.Recordset) As Variant
    MyName = rst!Name.Value
End Function

Public Function MyName(ByVal rst As Object) As Variant
    MyName = rst("Name").Value
End Function

Public Function MyName(ByVal rst As Variant) As Variant
    With rst
        MyName = .Fields.Item("Name").Value
    End With
End Function


Back to List