|
楼主 |
发表于 2014-9-5 22:47
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 renahu 于 2014-9-6 19:17 编辑
山菊花 发表于 2014-9-5 10:11
是的,“还不如自己组装好dc数组一次就全更新了呢”,这样理解就对了。这样写程序的好处就是以不变应万变, ...
老师,发现一个问题,我把建立词库加到窗体上了,在建立词库时,如果只是几张表,因为时间很短所以显示正常,如果几十张表,建立词库大概需要一分多钟,这时窗体里显示一片空白(所有控件都看不见了),等词库建完,窗体也正常显示了。老师,如何让窗体不受代码运行影响呢,要是有个进度提示就更好了。
老师又发现一个问题,一旦某个表第一个单词的位置是空的,那么就会出现“下标越界”的提示
For j = 2 To UBound(Arr) Step 2
For k = 1 To UBound(Arr, 2) '从行的首到尾
If Arr(j, k) <> "" And Not d.exists(Arr(j, k)) Then
d(Arr(j, k)) = Arr(j + 1, k): s = s + 1: Brr(s, 1) = Arr(j, k): Brr(s, 2) = Arr(j + 1, k)
End If
If j = 2 And k = 1 Then Brr(s, 3) = Arr(1, 1) 这里因为 Arr(2, 1) 是空,所以是s=0,出现下标越界提示,看来这个“标题栏”必须加在一行一行数第一个单词的旁边,而不是简单的 j = 2 And k = 1,老师您再给想想办法。
Next
Next
第二个问题,我用笨方法,加了个lab标记,应该是解决了
For j = 2 To UBound(Arr) Step 2
For k = 1 To UBound(Arr, 2)
If Arr(j, k) <> "" And Not d.exists(Arr(j, k)) Then
d(Arr(j, k)) = Arr(j + 1, k): s = s + 1: Brr(s, 1) = Arr(j, k): Brr(s, 2) = Arr(j + 1, k)
If lab = False Then
Brr(s, 3) = Arr(1, 1)
lab = True
End If
End If
'If j = 2 And k = 1 Then Brr(s, 3) = Arr(1, 1)
Next
Next
lab = False
新建词库也用同样的方法
|
|