如何在VBA中检查表是否为空?

如何在VBA中检查表是否为空?,vba,vb6,Vba,Vb6,伪代码如下所示: if table is not empty do something else do something else end if 表的名称类似于“ID\u RESULT\u 1”有一个IsEmpty()函数,它将返回一个布尔值,指示变量是否已初始化 如果要测试一个表的单元格中是否没有任何内容,则必须循环检查这些单元格 我建议使用这样一个函数,“测试”您放入的表的维度(仅处理3维),然后检查表的所有单元格: Public Fun

伪代码如下所示:

if table is not empty
            do something
else 
            do something else
end if
表的名称类似于“ID\u RESULT\u 1”

有一个
IsEmpty()
函数,它将返回一个布尔值,指示变量是否已初始化

如果要测试一个表的单元格中是否没有任何内容,则必须循环检查这些单元格

我建议使用这样一个函数,“测试”您放入的表的维度(仅处理3维),然后检查表的所有单元格:

Public Function IsTableEmpty(anArray As Variant) As Boolean
Dim DimN As Integer, _
    IsEmpty As Boolean

On Error Resume Next
    Debug.Print LBound(anArray, 1)
    If Err.Number > 0 Then GoTo DimN0
    Debug.Print LBound(anArray, 2)
    If Err.Number > 0 Then GoTo DimN1
    Debug.Print LBound(anArray, 3)
    If Err.Number > 0 Then GoTo DimN2
On Error GoTo 0
DimN = 3
GoTo Test

DimN0:
DimN = 0
GoTo Test
DimN1:
DimN = 1
GoTo Test
DimN2:
DimN = 2
GoTo Test

Test:
    Select Case DimN
        Case Is = 0
            If Not IsEmpty(anArray) Then IsTableEmpty = False
            Exit Function
        Case Is = 1
            For i = LBound(anArray) To UBound(anArray)
                If anArray(i) <> vbNullString Then
                    IsTableEmpty = False
                    Exit Function
                Else
                End If
            Next i
        Case Is = 2
            For i = LBound(anArray, 1) To UBound(anArray, 1)
                For j = LBound(anArray, 2) To UBound(anArray, 2)
                    If anArray(i, j) <> vbNullString Then
                        IsTableEmpty = False
                        Exit Function
                    Else
                    End If
                Next j
            Next i
        Case Is = 3
            For i = LBound(anArray, 1) To UBound(anArray, 1)
                For j = LBound(anArray, 2) To UBound(anArray, 2)
                    For k = LBound(anArray, 3) To UBound(anArray, 3)
                        If anArray(i, j, k) <> vbNullString Then
                            IsTableEmpty = False
                            Exit Function
                        Else
                        End If
                    Next k
                Next j
            Next i
        Case Else
            MsgBox "It appears that your table have too many dimensions to be tested by this code!", vbCritical + vbOKOnly
            IsTableEmpty = False
            Exit Function
    End Select
End Function
公共函数IsTableEmpty(数组作为变量)作为布尔值
Dim DimN为整数_
IsEmpty为布尔型
出错时继续下一步
调试。打印LBound(anArray,1)
如果错误编号>0,则转到DimN0
调试。打印LBound(anArray,2)
如果错误编号>0,则转到DimN1
调试。打印LBound(anArray,3)
如果错误编号>0,则转到DimN2
错误转到0
DimN=3
转到测试
DimN0:
DimN=0
转到测试
DimN1:
DimN=1
转到测试
DimN2:
DimN=2
转到测试
测试:
选择大小写DimN
大小写为=0
如果不是IsEmpty(anArray),则IsTableEmpty=False
退出功能
情况是=1
对于i=LBound(anArray)到UBound(anArray)
如果是数组(i)vbNullString,则
IsTableEmpty=False
退出功能
其他的
如果结束
接下来我
情况是=2
对于i=LBound(anArray,1)到UBound(anArray,1)
对于j=LBound(anArray,2)到UBound(anArray,2)
如果数组(i,j)为空字符串,则
IsTableEmpty=False
退出功能
其他的
如果结束
下一个j
接下来我
情况是=3
对于i=LBound(anArray,1)到UBound(anArray,1)
对于j=LBound(anArray,2)到UBound(anArray,2)
对于k=LBound(anArray,3)到UBound(anArray,3)
如果一个数组(i,j,k)vbNullString那么
IsTableEmpty=False
退出功能
其他的
如果结束
下一个k
下一个j
接下来我
其他情况
MsgBox“您的表似乎有太多的维度,无法通过此代码进行测试!”,vbCritical+vbOKOnly
IsTableEmpty=False
退出功能
结束选择
端函数
有一个
IsEmpty()
函数,它将返回一个布尔值,指示变量是否已初始化

如果要测试一个表的单元格中是否没有任何内容,则必须循环检查这些单元格

我建议使用这样一个函数,“测试”您放入的表的维度(仅处理3维),然后检查表的所有单元格:

Public Function IsTableEmpty(anArray As Variant) As Boolean
Dim DimN As Integer, _
    IsEmpty As Boolean

On Error Resume Next
    Debug.Print LBound(anArray, 1)
    If Err.Number > 0 Then GoTo DimN0
    Debug.Print LBound(anArray, 2)
    If Err.Number > 0 Then GoTo DimN1
    Debug.Print LBound(anArray, 3)
    If Err.Number > 0 Then GoTo DimN2
On Error GoTo 0
DimN = 3
GoTo Test

DimN0:
DimN = 0
GoTo Test
DimN1:
DimN = 1
GoTo Test
DimN2:
DimN = 2
GoTo Test

Test:
    Select Case DimN
        Case Is = 0
            If Not IsEmpty(anArray) Then IsTableEmpty = False
            Exit Function
        Case Is = 1
            For i = LBound(anArray) To UBound(anArray)
                If anArray(i) <> vbNullString Then
                    IsTableEmpty = False
                    Exit Function
                Else
                End If
            Next i
        Case Is = 2
            For i = LBound(anArray, 1) To UBound(anArray, 1)
                For j = LBound(anArray, 2) To UBound(anArray, 2)
                    If anArray(i, j) <> vbNullString Then
                        IsTableEmpty = False
                        Exit Function
                    Else
                    End If
                Next j
            Next i
        Case Is = 3
            For i = LBound(anArray, 1) To UBound(anArray, 1)
                For j = LBound(anArray, 2) To UBound(anArray, 2)
                    For k = LBound(anArray, 3) To UBound(anArray, 3)
                        If anArray(i, j, k) <> vbNullString Then
                            IsTableEmpty = False
                            Exit Function
                        Else
                        End If
                    Next k
                Next j
            Next i
        Case Else
            MsgBox "It appears that your table have too many dimensions to be tested by this code!", vbCritical + vbOKOnly
            IsTableEmpty = False
            Exit Function
    End Select
End Function
公共函数IsTableEmpty(数组作为变量)作为布尔值
Dim DimN为整数_
IsEmpty为布尔型
出错时继续下一步
调试。打印LBound(anArray,1)
如果错误编号>0,则转到DimN0
调试。打印LBound(anArray,2)
如果错误编号>0,则转到DimN1
调试。打印LBound(anArray,3)
如果错误编号>0,则转到DimN2
错误转到0
DimN=3
转到测试
DimN0:
DimN=0
转到测试
DimN1:
DimN=1
转到测试
DimN2:
DimN=2
转到测试
测试:
选择大小写DimN
大小写为=0
如果不是IsEmpty(anArray),则IsTableEmpty=False
退出功能
情况是=1
对于i=LBound(anArray)到UBound(anArray)
如果是数组(i)vbNullString,则
IsTableEmpty=False
退出功能
其他的
如果结束
接下来我
情况是=2
对于i=LBound(anArray,1)到UBound(anArray,1)
对于j=LBound(anArray,2)到UBound(anArray,2)
如果数组(i,j)为空字符串,则
IsTableEmpty=False
退出功能
其他的
如果结束
下一个j
接下来我
情况是=3
对于i=LBound(anArray,1)到UBound(anArray,1)
对于j=LBound(anArray,2)到UBound(anArray,2)
对于k=LBound(anArray,3)到UBound(anArray,3)
如果一个数组(i,j,k)vbNullString那么
IsTableEmpty=False
退出功能
其他的
如果结束
下一个k
下一个j
接下来我
其他情况
MsgBox“您的表似乎有太多的维度,无法通过此代码进行测试!”,vbCritical+vbOKOnly
IsTableEmpty=False
退出功能
结束选择
端函数

检查变量
ID\u RESULT\u 1
是否包含空变量。它与桌子无关…@Deanna:的确,谢谢你指出它!我写了一个函数,应该做到这一点!我只是在
如果anArray(I)vbNullString
IsEmpty(anArray(I))
之间犹豫了一下,是否有关于这些的注释?这将检查变量
ID\u RESULT\u 1
是否包含空变量。它与桌子无关…@Deanna:的确,谢谢你指出它!我写了一个函数,应该做到这一点!我只是在
如果anArray(I)vbNullString
是空的(anArray(I))
之间犹豫了一下,有什么意见吗?什么样的表?数据库的一部分?您使用的是什么数据库和什么数据库访问库?什么类型的表?数据库的一部分?您使用的是什么数据库和什么数据库访问库?