VBA:如何检查数组alterArray指定位置是否存在值?
检查数组指定索引是否存在有效值的方法
嘿,针对你遇到的这个问题,其实可以从两个层面来检查alterArray(5)是否有有效值——毕竟数组可能还没扩展到那个索引,或者索引存在但值是空的。结合你提到的是从Outlook填充的场景,大概率是用VBA处理的,下面给你具体的解决方案:
第一步:先确认索引是否在数组的有效范围内
因为如果数组只填充了3个值,它的上界(UBound)应该是2,这时候直接访问alterArray(5)会触发下标越界错误。所以先判断索引是否存在:' 先检查数组的上界是否大于等于5 If UBound(alterArray) >= 5 Then ' 索引5存在,接下来检查值是否有效 If Not IsEmpty(alterArray(5)) Then ' alterArray(5)有非空的值 Debug.Print "alterArray(5)的有效值:" & alterArray(5) Else ' 索引存在,但值为空 Debug.Print "alterArray(5)存在,但值为空" End If Else ' 数组还没到索引5的位置,也就是这个索引根本不存在 Debug.Print "alterArray(5)不存在,当前数组共有" & UBound(alterArray) + 1 & "个元素" End If注:因为你提到
alterArray(0-2)有值,说明数组是0基索引的,所以元素总数是UBound(alterArray) + 1。第二步:针对字符串类型元素的额外检查
如果数组里存储的是字符串,有时候可能会出现空字符串("")而不是Empty,这时候可以用字符串修剪后判断是否为空:If UBound(alterArray) >= 5 Then If Trim(alterArray(5)) <> "" Then ' 有非空的字符串值 Debug.Print "alterArray(5)有有效字符串:" & alterArray(5) Else ' 是空字符串 Debug.Print "alterArray(5)是空字符串" End If End If
这样就能覆盖你遇到的两种情况:要么数组长度不够,索引5不存在;要么索引存在但值为空/空字符串。根据你实际存储的元素类型调整检查逻辑就好啦!
内容的提问来源于stack exchange,提问作者dezimar
相关产品推荐
相关产品推荐

