VBA的Date类型比较奇怪 。
测试:
1. 新建一个空白的Excel文档,在A1单元格输入2009-11-12 。
【Excel VBA中的Date类型的匹配问题】2. 打开VBA编辑器,插入模块,增加下面这个宏
Sub test()MsgBox #11/12/2009# = Range("A1").Value ' trueMsgBox VarType(#11/12/2009#) = VarType(Range("A1").Value) ' trueMsgBox Application.WorksheetFunction.Match(#11/12/2009#, Range("A1"), 0) ' errorEnd Sub3. 按F5运行test宏,可以看到Range("A1")的类型和值都和#11/12/2009#一致(通过对range("A1")的监视也可以看出这一点),都是Date类型,但是如果用match去匹配的话,却出现错误 。
解决方法,在匹配中将要匹配的Date类型的数据强制转换成Long类型去匹配 。
MsgBox Application.WorksheetFunction.Match(CLng(#11/12/2009#), Range("A1"), 0)对其原理还是不清楚,不知道有没有看到的高手来做一下解释 。
推荐阅读
- Excel VBA使用vlookup出现1004错误解决方法
- Excel批量导入图片的方法实例教程
- Excel VBA中让你意想不到的陷阱
- Excel删除数字保留文本的两种方法
- 怎么停止Excel屏幕刷新
- Excel VBA单元格的引用方法
- Excel for VBA:对象枚举循环For each
- 怎么隐藏Excel常用工具栏
- Excel VBA“对于指定的操作,该主题不受信任。”的解决方法
- Excel条件格式图标集的使用实例教程