Excel函数及VBA问题汇总

1. Vlookup采用模糊匹配,仍然出现N/A错误

通常大家认为只有精确匹配,才会出现N/A错误,也就是查找不到结果;模糊匹配,怎么也能找到一个小于查找值的最大值吧。

之所以模糊匹配仍出现N/A错误,是因为查找范围,Table_Array(第二个参数)的第一列,没有按升序进行排序。哈哈,有时候函数帮助里的细节能解决关键问题。

 

2. 将单元格区域Range对象直接赋值给数组Array,经常出现下标越界的错误

假设单元格区域对象 set rng=Range(A1:B5),其中A1-A5分别为1,2,3,4,5,B1-B5分别为6,7,8,9,10

Dim Arr as Variant

Arr=rng  '将rng赋值给Arr

Debug.print Arr(1)  '此处将报错,因为Arr是二维的,所以此处缺少一个参数,应该为Arr(1,1)等

Debug.print Arr(0,1)  '此处报错,因为Arr每个维度的起始Index都是1,而不是0.所以同样出错的是Arr(1,0)

Debug.print Arr(2,5)  ‘此处报错,因为5是列号,而数组实际上只有两列(A、B两列),也就是说第一个参数是行号,第二个参数是列号,正好与Range对象是对应的。

Debug.print Ubound(Arr)  '此处输出结果为:5,即行号的最大值,同样也是总行数。

 

3. MSCOMCT2.OCX缺失引起的问题及处理方法

我曾经编写了一个含VBA的Excel文件,其中使用了DTPicker控件,该文件在同事电脑上,就出现了“无法装载这些对象 因为他们不适用于这台计算机”的错误,因为DTPicker控件依赖于MSCOMCT2.OCX,

而同事的计算机上恰好缺少这个控件,于是从我的电脑C:\WINIDOWS\SYSTEM32里把MSCOMCT2.OCX拷贝到同事电脑上,再次打开文件,还是同样的错误。

原来简单的拷贝MSCOMCT2.OCX到system32文件夹是不够的,还要将其注册一下,直接Win键+R,运行 Regsvr32  MSCOMCT2.OCX.

不幸的是,又出现新错误,关键词“DllRegisterServer调用失败”,这是因为当前不是管理员账户,没有权限调用DllRegisterServer,所以解决办法就是:

程序 - 附件 - 命令提示符,在”命令提示符“上点击鼠标右键,选择”以管理员身份运行“命令,输入并运行Regsvr32  MSCOMCT2.OCX

Bingo,成功!

2013-07-11又遭遇新问题,同事的电脑是Windows8 64位,需要将MSCOMCT2.OCX复制到windows\syswow64文件夹下,并用Win键+X,选择“运行命令提示行(管理员)”,在出现的cmd窗口里,

使用cd命令,切换到syswow64文件夹,然后运行Regsvr32  MSCOMCT2.OCX。

Bingo,又成功了!

 

posted on 2013-03-28 17:00  Graduatedben  阅读(388)  评论(0编辑  收藏  举报

导航