如何给dropdownlist动态赋初始值_利用动态数组去除重复值时错误提示的解决方法...

43ce8b0ce5be560c33a45b6a8056ed73.png

大家好,今日继续讲解VBA数组与字典解决方案的第23讲,利用动态数组排重提示错误的解决办法。这讲的内容和上一讲的内容是相关联的,在上一讲的回向中,我提到了上一讲的代码中启动了错误处理程序来忽略一处错误,这是哪里错了呢?

对了,就是代码第一次运行到If UBound(Temp) < 0这个时候的TEMP值是什么呢? Temp = Filter(Arr, Splarr(i)) 此时的Arr还是一个空的集合,是不能够求得TEMP集合的,那么有没有办法把这个错误避免呢?下面我们看看今日的代码改进:

Sub MyNZsz_6() '第23讲 利用数组排重时避免错误提示的方法

Dim Splarr() As String

Dim Arr() As String

Dim Temp() As String

Dim r As Integer

Dim i As Integer

Splarr = Split(Sheets("22").Range("a1"), " ")

ReDim Arr(1)

Arr(1) = Splarr(0)

r = 1

For i = 0 To UBound(Splarr)

Temp = Filter(Arr, Splarr(i))

If UBound(Temp) < 0 Then

r = r + 1

ReDim Preserve Arr(1 To r)

Arr(r) = Splarr(i)

End If

Next

Sheets("23").Range("a5").Resize(r, 1) = Application.Transpose(Arr)

End Sub

代码截图:

f07c81130ae7a2233069516ccc9ec766.png

代码讲解:

1 在上述代码中我加了三行

ReDim Arr(1)

Arr(1) = Splarr(0)

r = 1

不要小看这三行的意义,这三行相当于把arr提前赋了初始值,这样就避免了代码在执行过程中产生错误了。

上述代码中ReDim Arr(1),是先扩展数组到Arr(1),然后将第一个Splarr()值即Splarr(0)赋给它,由于arr有了第一个值所以此时也应该给r 同步赋值1.

下面我们看代码的运行前后的截图:

73f04eada6150d5dd763c635f82c2091.png

7651ddb6dc50dbf9fffd4150e8dd3c10.png

今日内容回向:

1 如何避免在排重过程中出现错误?

2 如果不给r同步赋值是否可以呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值