|
在Excel中,有两个Replace函数:
1、VBA工程函数,有两种写法:
⑴直接使用:sr=replace("中华人民共和国公民", "人民共和国公民", "老百姓")。
⑵加个VBA:sr = VBA.replace("中华人民共和国公民", "人民共和国公民", "老百姓")。
2、一个是WorksheetFunction的replace工作表函数,据说(我没有查阅到权威说法,只是在网上听人说,但我在VBA中测试是成功的)在Excel VBA中使用该函数有两种写法:
⑴sr = Application.WorksheetFunction.replaceApplication.Replace("中华人民国共和国公民", 3, 7, "老百姓")
⑵sr = Application.replaceApplication.Replace("中华人民国共和国公民", 3, 7, "老百姓")
结论:
⑴在Excel中确有两个Replace函数:一个是VBA工程函数,一个是Excel工作表函数,且两个函数在VBA代码中的写法不一样。
⑵两个函数的参数个数类型不一样:工程函数Replace有三个参数,都是字符串类型;工作表函数Replace四个函数:一、四时字符串,二、三两个参数是integer类型的,是数字。
⑶根据你在Excel代码中的写法,推断这个Replace应该是工作表函数。
试验:
⑴从Application.Replace(GetURL1, 11, , 10)中可以看出,应该有四个参数,虽然你留有一个参数位置(是省略了吗?),然而我在Excel工作表中用这种写法测试,是不成功的。况且,二、三两个参数都是数字类型的,能省略吗?接着,我又将其看做是工作表函数,将其写作Application.WorksheetFunction.Replace(GetURL1, 11, , 10),仍然报错,看来,应该不是工作表函数。
⑵不是工作表函数,那就是工程函数了,我将其写成VBA.Replace(GetURL1, 11, , 10)测试,又报错了。
怪事:难道这个Replace是个怪种:既不是工程函数,又不是工作表函数呢?!!
⑶引用到Word.Application中继续测试。先在WordVBA工程中勾选Excel工程引用,尽管我推测它是Excel工作表函数的可能,我还是做了四种写法的尝试:
A、Excel.Application.Replace(Excel.Application.Replace(GetURL1, 11, , 10), 5, , 10)
B、Excel.VBA.Replace(Excel.VBA.Replace(GetURL1, 11, , 10), 5, , 10)
C、Excel.Application.WorksheetFunction.Replace(Excel.Application.WorksheetFunction.Replace(GetURL1, 11, , 10), 5, , 10)
D、Replace(Replace(GetURL1, 11, , 10), 5, , 10)'Word.Application VBA工程中也有Replace函数,可以直接用。
结果,出乎我的双重意外:①不是工作表函数,报错。②作工程函数,没有报错。然而出现乱码!!!
呜呼,怪哉!怪哉!!你这个Replace到底是何方神圣?哪里的怪种??
期盼E友、老师、大侠指点迷津!!
先谢了,在线等。
盼你的回音…………
|
|