您的位置:

VBA函数vbaInStr函数介绍

一、vbaInStr函数用法

vbaInStr函数是VBA字符串函数之一,主要是用于查找一个字符串中是否包含另外一个字符串,并返回查找到的第一个子串出现的位置。他有如下几个参数:

    'vbainstr(string1,string2,[compare])
    string1: 要查找的字符串。
    string2: 要查找的子串。
    compare: 可选参数,指定vbaInStr函数的查找方式,默认是0,表示区分大小写。当compare为1时表示不区分大小写。

返回值:如果string2子串在string1中找到,则返回string2在string1中第一次出现的位置,如果没有找到则返回0。

二、VBA函数介绍

VBA函数的作用是为了简化代码,方便代码编写和重用。在VBA中,函数与子程序的不同之处在于:函数返回一个值,而子程序不返回任何值。

三、vbaDir函数

vbaDir函数返回一个目录中符合某种文件名匹配模式的文件名。

    'vbaDir(Path,[Attributes])
    Path: 一个字符串,包含要查询的文件名或者路径。
    Attributes: 可选参数,指定文件或文件夹的属性。可以为以下值之一:
    - vbNormal:(默认) 普通文件
    - vbReadOnly: 只读文件
    - vbHidden: 隐藏文件
    - vbDirectory: 目录文件,可与上面三个选项同时使用。

四、vbArray函数

vbArray函数可以用于确定一个变量是否为数组。如果一个变量是数组,则返回True,否则返回False。

    Dim arr() As Integer
    Dim num As Integer
    Debug.Print VarType(arr) = vbArray  'True
    Debug.Print VarType(num) = vbArray  'False

五、VBA函数查询

VBA自带了很多函数,但并不是所有的函数都能满足我们的需要。当我们遇到无法实现的功能时,我们可以考虑使用VBA函数库。

可以在VBE中打开“工具->引用”菜单,勾选Microsoft Excel Object Library以及Microsoft Scripting Runtime,再在VBE中打开“视图->对象浏览器”,即可看到VBA函数库。

六、vbInt函数

vbInt函数可以取整。函数的返回值为double类型,表示取整后的值。

    Dim a As Double
    a = 4.5
    Debug.Print Int(a)        '4
    Debug.Print Round(a)      '5
    Debug.Print Round(a, 0)   '5

七、vbaCount函数

vbaCount函数可以统计数组中元素的数量。

    Dim arr() As Integer
    ReDim arr(0 To 5)
    Debug.Print UBound(arr) - LBound(arr) + 1     '6

八、if Instr函数

If Instr函数可以判断一个字符串是否包含某个子串。当包含子串时,返回子串在字符串中的位置;否则返回0。

    Dim str As String
    str = "Hello World!"
    
    If InStr(str, "World") Then
        Debug.Print "包含World!"
    Else
        Debug.Print "不包含World!"
    End If

九、Instr函数实例

Instr函数可以用于很多场景,以下是一些常见的实例:

1、查找字符串中数字的位置:

    Function FindNumberInStr(str As String) As Integer
        Dim i As Integer
        For i = 1 To Len(str)
            If InStr("0123456789", Mid(str, i, 1)) Then
                FindNumberInStr = i
                Exit Function
            End If
        Next i
    End Function

2、查找字符串中最后一个数字的位置:

    Function FindLastNumberInStr(str As String) As Integer
        Dim i As Integer
        For i = Len(str) To 1 Step -1
            If InStr("0123456789", Mid(str, i, 1)) Then
                FindLastNumberInStr = i
                Exit Function
            End If
        Next i
    End Function

3、查找字符串中第一个空格的位置:

    Function FindSpaceInStr(str As String) As Integer
        FindSpaceInStr = InStr(str, " ")
    End Function

4、查找字符串中第二个空格之后的子串:

    Function FindSecondSpaceInStr(str As String) As String
        Dim i As Integer
        Dim cnt As Integer
        Dim lenstr As Integer
        lenstr = Len(str)
        For i = 1 To lenstr
            If Mid(str, i, 1) = " " Then
                cnt = cnt + 1
                If cnt = 2 Then
                    FindSecondSpaceInStr = Mid(str, i + 1, lenstr - i)
                    Exit Function
                End If
            End If
        Next i
    End Function