如何在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))
之间犹豫了一下,有什么意见吗?什么样的表?数据库的一部分?您使用的是什么数据库和什么数据库访问库?什么类型的表?数据库的一部分?您使用的是什么数据库和什么数据库访问库?