Access/VBA 常规 “内存溢出” 错误!-何保辛
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


Access/VBA 常规 “内存溢出” 错误!

发表时间:2013/1/3 5:41:04 评论(0) 浏览(18522)  评论 | 加入收藏 | 复制
   
摘 要:这真的是 Access VBA 的问题,我测试过 Excel 2007 都没有这个问题的!
正 文:

今天很特殊的发现一个 Access 错误! 居然 Accessoft.com 还没有人报上的!


大家只需要执行 a= Instr( chr(-23124), "x"),就会出现

这是必然的错误!


百度里面查查看,原来 Access VBA 就是有这个错误!

网上说,当一个字符串里面包含那26个日本字其中一个就会出错!


ガ|ギ|グ|ゲ|ゴ|ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|パ|ビ|ピ|ブ|プ|ベ|ペ|ボ|ポ|ヴ

真的是  Bakka 了!


为什么有日本字就不能 Instr, like, replace 了? 基本上所有 字符串处理 都报错!


但是我查看我的字符,里面根本就没有这26个字哦!只是很多的火星文!麻烦了!到底哪个字符让 VBA 出错呢?


结果就写了一个程序,去检查什么字会报错:


Public Sub ccccc()
Set rs = CurrentDb().OpenRecordset("cCode")
On Error Resume Next
For X = &H8140 To &HFEFE
    tt = Chr(X)
    Err.Clear
    n = InStr(tt, "A")
    If Err > 0 Then
        rs.AddNew: rs!ccode = X:: rs.Update
    End If
Next
End Sub
检查所有的双字节字符,从 &H8140 - &HFEFE,就是所有 中日韩繁简体包含的字符!


跑下来,原来有27个!

ガ|ギ|グ|ゲ|ゴ|ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|パ|ビ|ピ|ブ|プ|ベ|ペ|ボ|ポ|ヴ|

多了个 3撇! 都不知道什么字! 真的是 火星人才知道了!


网上说的解决方法就是 做个函数 取代掉! 搜搜  “Access VBA Instr 内存溢出” ,就有无限个一模一样的解决方法!


但是,我就奇怪了,他们都是用 replace 来取替掉的,刚刚不是说 instr, replace, like 都报错吗?


反正,我就不用处理这些文字的,我就没有用 “编码” 的方法来替换,我就是需要检测到,忽略掉就可以了!


我简单的测试过 StrConv 也没办法简单处理,最后我就用了非VBA标准函数去处理了,我用了 正则表达式:


Set re = New RegExp
re.Multiline = True
re.IgnoreCase = True
re.Global = True

re.pattern = "(?:ガ|ギ|グ|ゲ|ゴ|ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|パ|ビ|ピ|ブ|プ|ベ|ペ|ボ|ポ|ヴ|ヾ)"
tmpData = re.Replace(responseData, "")
responseData = tmpData
这个 New RegExp 需要引用, Microsoft RegExp 5.5 的库!



最后那两句 好奇怪的,直接用  responseData = re.Replace(responseData, "") 是不能被替换掉的!不管了,反正赶时间做事!


我的环境是 Win7 64位 + Office 2007,大家不同的系统版本,不同Office版本 可能会有不同吧?我就不知道了!分享下,让大家少点烦恼!



开发者你们好,这是 地球信息思维开发者 dbaseIIIer (QQ325613888) 
更多的 Access/VBA 互联网交互技术,可以参考 本站内部栏目  互联网技术栏目
更多的思维在  新浪微博   Access贴吧  VisualPHP贴吧

PS:这真的是 Access VBA 的问题,我测试过 Excel 2007 都没有这个问题的!


Access软件网交流QQ群(群号:198465573)
 
 相关文章
[access查询]解决联合查询溢出的一个方法   【竹笛  2005/1/20】
关于运行时错误429:ActiveX 部件无法创建对象的解决方法  【  2011/5/10】
Access运行时错误'424':需求对象的解决方法  【麥田  2012/9/11】
Access运行时错误'94':无效使用Null的解决方法  【麥田  2012/9/17】
Access运行时错误'3163':字段太小而不能接受所要添加的数...  【麥田  2012/9/22】
常见问答
技术分类
相关资源
文章搜索
关于作者

何保辛

文章分类

文章存档

友情链接