如果在VBA语言中x是整数,我该如何表达这个术语?

exc*_*l34 14 vb6 vba

如果在VBA语言中x是整数,我该如何表达这个术语?我想编写一个代码,如果x是整数,它会执行某些操作,如果不是vba excel则执行其他操作.

Sub dim()
  Dim x is Variant

  'if x is integer Then 

  'Else:

End Sub 
Run Code Online (Sandbox Code Playgroud)

sha*_*esh 21

If IsNumeric(x) Then 'it will check if x is a number
Run Code Online (Sandbox Code Playgroud)

如果要检查类型,可以使用

If TypeName(x) = "Integer" Then
Run Code Online (Sandbox Code Playgroud)


Fio*_*ala 15

这可能适合:

If x = Int(x) Then
Run Code Online (Sandbox Code Playgroud)


Oor*_*ang 12

这取决于你是指数据类型"Integer",还是意思是:"没有小数的数字".如果你的意思是后者,那么快速手动测试就足够了(见第一个例子); 如果你的意思是前者,那么有三种方法来查看数据类型,它们各有利弊:

  1. VarType将告诉您变体的子类型(参见示例).它的速度相当快,因为​​它只是对枚举的内存读取,但只能在变体上使用,并且不会告诉您特定的对象类型.此外,变体的子类型通常是自动分配的(通常倾向于使用最小的合适数据类型进行键入).但它可能很棘手(见例子).
  2. TypeName是最灵活和最健壮的.它可以告诉您特定的类类型和Variant子类型.它有一个小缺点,测试需要字符串比较,因此性能影响微乎其微.除非有一些严重的重复,否则它不会引人注意.此外,如果项目中有两个同名的对象(例如Word.Range和Excel.Range),则TypeName无法区分(它将为两者返回"Range").
  3. 最后有TypeOf运算符(在这里不会帮助你).TypeOf运算符无法测试基元(例如:Integer,Long,String等),但它可以告诉对象的特定类型(例如.Excel.Range vs Word.Range).如果对象为空,则TypeOf运算符将抛出错误,因此您必须始终预先测试对象"Not Is Nothing"但是作为运算符而不是函数,它比TypeName快得多(即使使用pretest).
Public Sub ExampleManual()
    Dim d As Double
    d = 1
    If Fix(d) = d Then
        MsgBox "Integer"
    End If
End Sub

Public Sub ExampleTypeName()
    Dim x As Integer
    MsgBox TypeName(x)
End Sub

Public Sub ExampleTypeOf()
    Dim x As Excel.Range
    Set x = Selection
    ''//Using TypeOf on Objects set to Nothing will throw an error.
    If Not x Is Nothing Then
        If TypeOf x Is Excel.Range Then
            MsgBox "Range"
        End If
    End If
End Sub

Public Sub ExampleVarType()
    Dim x As Variant
    ''//These are all different types:
    x = "1"
    x = 1
    x = 1&
    x = 1#
    Select Case VarType(x)
        Case vbEmpty
        Case vbNull
        Case vbInteger
        Case vbLong
        Case vbSingle
        Case vbDouble
        Case vbCurrency
        Case vbDate
        Case vbString
        Case vbObject
        Case vbError
        Case vbBoolean
        Case vbVariant
        Case vbDataObject
        Case vbDecimal
        Case vbByte
        Case vbUserDefinedType
        Case vbArray
        Case Else
    End Select
End Sub
Run Code Online (Sandbox Code Playgroud)