TypeName в Excel VBA возвращает что?
Я хочу проверить, какой тип данных находится в: Cells(2, 1).Value
т. е. "что здесь происходит?" под.
Я попробовал имена (целочисленные / длинные и т. д.) но, кажется, не принимает.
If TypeName(Cells(r, 1).Value) = "WHAT GOES HERE?" Then
MsgBox "Yes"
Else
MsgBox "No"
End If
4 ответа:
Что ж, заглянув в MSDN, мы получим таблицу возможных возвращаемых значений
String Returned Variable ------------------------------------------------------------------- Object type An object whose type is objecttype Byte Byte value Integer Integer Long Long integer Single Single-precision floating-point number Double Double-precision floating-point number Currency Currency value Decimal Decimal value Date Date value String String Boolean Boolean value Error An error value Empty Uninitialized Null No valid data Object An object Unknown An object whose type is unknown Nothing Object variable that doesn't refer to an object
Кроме того, вы также можете увидеть приведенную выше таблицу, используя встроенную справку (кредит идет Акселю Рихтеру). Чтобы быстро перейти на соответствующую страницу, выберите функцию и нажмите F1 или перейдите на страницу справки через обозреватель объектов следующим образом:
Если ваша ячейка содержит число, то вероятное имя типа - "Double"
If TypeName(Cells(r, 1).Value) = "Double" Then MsgBox "Yes" Else MsgBox "No" End If
Краткое Примечание:Вы можете просто попробовать его. Заполните ячейку, которую вы хотите проверить, значением и используйте
MsgBox TypeName(cells(2, 1).Value)
Если ячейки пусты, то возвращается
Empty
.
Если вам нужен номер переменной из таблицы MSDN , то вам нужен
VarType
. Вот так:
+===================+=======+====================================================+ | Constant | Value | Description | +===================+=======+====================================================+ | vbEmpty | 0 | Empty (uninitialized) | +-------------------+-------+----------------------------------------------------+ | vbNull | 1 | Null (no valid data) | +-------------------+-------+----------------------------------------------------+ | vbInteger | 2 | Integer | +-------------------+-------+----------------------------------------------------+ | vbLong | 3 | Long integer | +-------------------+-------+----------------------------------------------------+ | vbSingle | 4 | Single-precision floating-point number | +-------------------+-------+----------------------------------------------------+ | vbDouble | 5 | Double-precision floating-point number | +-------------------+-------+----------------------------------------------------+ | vbCurrency | 6 | Currency value | +-------------------+-------+----------------------------------------------------+ | vbDate | 7 | Date value | +-------------------+-------+----------------------------------------------------+ | vbString | 8 | String | +-------------------+-------+----------------------------------------------------+ | vbObject | 9 | Object | +-------------------+-------+----------------------------------------------------+ | vbError | 10 | Error value | +-------------------+-------+----------------------------------------------------+ | vbBoolean | 11 | Boolean value | +-------------------+-------+----------------------------------------------------+ | vbVariant | 12 | Variant (used only with arrays of variants) | +-------------------+-------+----------------------------------------------------+ | vbDataObject | 13 | A data access object | +-------------------+-------+----------------------------------------------------+ | vbDecimal | 14 | Decimal value | +-------------------+-------+----------------------------------------------------+ | vbByte | 17 | Byte value | +-------------------+-------+----------------------------------------------------+ | vbLongLong | 20 | LongLong integer (Valid on 64-bit platforms only.) | +-------------------+-------+----------------------------------------------------+ | vbUserDefinedType | 36 | Variants that contain user-defined types | +-------------------+-------+----------------------------------------------------+ | vbArray | 8192 | Array | +-------------------+-------+----------------------------------------------------+
Тогда вы можете просто использовать
If VarType(TempArray) = vbObject Then
ИлиIf VarType(TempArray) = 9 Then