Excel上VBA编程出错,求大佬帮忙找原因!

手册是C++的,我编的是VBA的,一直提示“错误的参数号或无效的属性赋值”。我试过按照手册要求的赋值类型来设置参数,还是不行,请大佬帮忙看看。感谢!

人家要空格隔开 "1 2 3 4 5"
再说你函数在哪,是不是自己直接造的追问

追答

好心累哦,用EXCEL连接com接口读数据,要定制开发吗?i d去a 加V

追问

是啊

为什么要加V,不能在这个说吗?

追答

不是不能说,是说如果要定制成型的软件,这东西用excel来实现性能太烂了

追问

但是针对我们的需求来说Excel足够了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-04
我觉得可能出在strConnectionString这个参数上也就是你程序里写的"1",这C++手册里是char指针,但VBA里似乎没有指针类型吧,没怎么接触过不清楚VBA;要不就是看第一张图里的它传的字符串"1 2 3 4 5"里有五个用空格隔开字符,你这里只有一个追问

我试过用“1 2 3 4 5”,还是同样的报错

VBA里面给的定义是这样的,请问我需要怎么写这个字符串变量呢?

追答

你是要实现串口通信是吧?看着VBA手册那应该和ConnectionStringVal没关了,你现在传的是"1",这手册里也存在这个值;这VBA手册还是和C++不一样的,这里面只有四个参数而你现在都有5个参数了,还有和COM口通信是要设置波特率的也就是VBA手册里的第四个参数,看你自己的COM口设置,比如我电脑里的COM1是9600

追问

关于参数个数的问题我也发现了,VBA里面的定义是4个参试,但是我只设置4个参数的话报错提示变成了“缺少函数或变量”,必须改成5个参数才行

我的接口波特率也是9600,改成这个还是同样的报错,我快绝望了

而且我看描述文件说这个波特率参数是对应RS-232C接口的波特率

用USB接口的话,这个波特率设置成0就行

追答

vba手册不会错的吧,传5个参数肯定不对;这手册对参数也没个说明真是醉了;反正就是四个参数值的范围也给你定好了,不断组合试试呗

追问

是不是字符弄错了,VBA里面给的是’1’,而我设置的是“1”,但是改成’1’又提示语法错误

只设置4个参数的时候一直提示“缺少函数或变量”

追答

笑出了眼泪,我看网上VBA串口通信用的是MSComm控件实现,要不你改成这种方式实现 ' Use COM1.
MSComm1.CommPort = 1
' 9600 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "9600,N,8,1"

这是网上copy的一部分

追问

好的,我试试看

追答

老铁 有没有解决呢?

追问

没呢,心好累

我连接设备好像必须通过那个函数

其他的都不行

我在C++上用这个函数就一点问题都没有

追答

这个参数加了中括号是啥意思,一脸懵逼;你这个Ca200对象是从哪里来的,我下的一个手册根本搜不到,想玩玩都不知道咋玩,要不通过vba调别的语言写的接口去通信,这种方式试过没

追问

手册有需要的话我可以发给你

追答

这个api是要依赖第三方,还是说windows内部就有的;是要依赖第三方的就算了,windows内部就有的可以发我一份。谢谢

追问

应该是依赖第三方吧

第2个回答  2019-09-04
为什么没有vb文档呢
第3个回答  2019-09-04
你那个是做什么用的?那个代码?没见过你这样的写法?自己造的?本回答被提问者采纳
相似回答