Tal*_*guy 7 error-handling excel vba excel-2003
我正在编写一个脚本,它将循环遍历我的电子表格,并查找是否有任何重复的所选单元格.如果有重复,那么该函数将返回一个行是重复的数组,并创建一个注释告诉我哪些行是重复的.我已经能够处理错误0但是现在当我使用UBound函数检查数组中是否存在元素时,我得到错误9.有没有人知道如何验证整数数组,如果它是空的或不是因为我的代码似乎没有完成这项工作.以下是我的代码
Function IsArrayEmpty(anArray As Variant) As Boolean
Dim i As Integer
On Error Resume Next
i = UBound(anArray, 1)
Select Case (Err.Number)
Case 0
IsArrayEmpty = True
Case 9
IsArrayEmpty = True
Case Else
IsArrayEmpty = False
End Select
End Function
Run Code Online (Sandbox Code Playgroud)
试试这个来检查一个空数组:
Dim arr() As String
If (Not arr) = -1 Then
Debug.Print "empty"
Else
Debug.Print "UBound is " & UBound(X)
End If
Run Code Online (Sandbox Code Playgroud)
HTH!
您的函数失败,因为如果没有引发错误UBound()(即数组的大小),Err.Number则为0并且:
Case 0
IsArrayEmpty = True
Run Code Online (Sandbox Code Playgroud)
执行时返回错误的结果.
最简单的方法是捕获错误:
Function IsArrayEmpty(anArray As Variant) As Boolean
On Error GoTo IS_EMPTY
If (UBound(anArray) >= 0) Then Exit Function
IS_EMPTY:
IsArrayEmpty = True
End Function
Run Code Online (Sandbox Code Playgroud)