I make a variation of AllenBrowne routine GetDLLTypeName(FieldType) (
http://allenbrowne.com/ser-49.html) for DLL DataTypes
, adapted for VBA DataTypes
This returns almost consistent results applied to all From control types
Public Function GetVBATypeName(FieldType As VBA.VbVarType) As String
Dim rtnStr As String
If FieldType > 8192 Then 'Handle compound Array DataTypes (8192)
rtnStr = GetVBATypeName2(8192) & "-" & GetVBATypeName2(FieldType - 8192)
Else ' Normal DataTypes
rtnStr = GetVBATypeName2(FieldType)
End If
GetVBATypeName = rtnStr
End Function
Public Function GetVBATypeName2(FieldType As VBA.VbVarType) As String
Dim rtnStr As String
Select Case FieldType
Case vbEmpty: rtnStr = "EMPTY"
Case vbNull: rtnStr = "NULL"
Case vbInteger: rtnStr = "INTEGER"
Case vbLong: rtnStr = "LONG"
Case vbSingle: rtnStr = "SINGLE"
Case vbDouble: rtnStr = "DOUBLE"
Case vbCurrency: rtnStr = "CURRENCY"
Case vbDate: rtnStr = "DATE"
Case vbString: rtnStr = "STRING"
Case vbObject: rtnStr = "OBJECT"
Case vbError: rtnStr = "ERROR"
Case vbBoolean: rtnStr = "BOOLEAN"
Case vbVariant: rtnStr = "VARIANT"
Case vbDataObject: rtnStr = "DATAOBJECT"
Case vbDecimal: rtnStr = "DECIMAL"
Case vbByte: rtnStr = "BYTE"
Case 20: rtnStr = "LONGLONG" 'vbLongLong ...
Case vbUserDefinedType: rtnStr = "USERDEFINED"
Case vbArray: rtnStr = "ARRAY"
Case Else: rtnStr = "Error DataType"
End Select
GetVBATypeName2 = rtnStr
End Function
to note that Case 20, correspond to vbLongLong, but not recognized by VBA (¿?) in Access2019
' Case vbLongLong: rtnStr = "LONGLONG" '(=20)
Described here :
https://docs.microsoft.com/en-us/of...interface-help/vartype-function#return-values.