改的别人的代码,编程方面一窍不通。
通过Arduino读取数据,将处理后的数据导入到excel中。
原arduino显示的数据:
更改后的arduino数据:
原处理数据部分代码:
Const sensor_num As Integer = 6
Dim xlObject(3) As Object
Dim xlAgent(0, sensor_num * 3)
Dim data As String
Dim data_arr() As String
中间部分省略
data_arr = Split(data, ",")
For i = 1 To sensor_num
xlAgent(0, i + sensor_num * 0) = data_arr(i * 6 - 6)
xlAgent(0, i + sensor_num * 1) = data_arr(i * 6 - 4)
xlAgent(0, i + sensor_num * 2) = data_arr(i * 6 - 2)
Next
中间省略
With xlObject(3)
If count = 1 Then
'.range("B6:T10000").clearcontents()
.cells(2, 2) = rec_time.ToString("yyyy/MM/dd HH:mm:ss.fff")
End If
xlAgent(0, 0) = rec_time.ToString("yyyy/MM/dd HH:mm:ss.fff")
.range(.cells(5 + count, 2), .cells(5 + count, 20)) = xlAgent
.range(.cells(5 + count, 21)) = xlke1
.range(.cells(5 + count, 22)) = xlke2
End With
更改后的代码:
Const sensor_num As Integer = 6
Dim xlObject(3) As Object
Dim xlAgent(0, sensor_num * 3)
Dim xlke1
Dim xlke2
Dim data As String
Dim data_arr() As String
略
data_arr = Split(data, ",")
For i = 1 To sensor_num
xlAgent(0, i + sensor_num * 0) = data_arr(i * 6 - 6)
xlAgent(0, i + sensor_num * 1) = data_arr(i * 6 - 4)
xlAgent(0, i + sensor_num * 2) = data_arr(i * 6 - 2)
Next
xlke1 = data_arr(36)
xlke2 = data_arr(37)
略
With xlObject(3)
If count = 1 Then
'.range("B6:T10000").clearcontents()
.cells(2, 2) = rec_time.ToString("yyyy/MM/dd HH:mm:ss.fff")
End If
xlAgent(0, 0) = rec_time.ToString("yyyy/MM/dd HH:mm:ss.fff")
.range(.cells(5 + count, 2), .cells(5 + count, 20)) = xlAgent
.range(.cells(5 + count, 21)) = xlke1
.range(.cells(5 + count, 22)) = xlke2
更改后再运行就出现
找不到成员。(异常来自HRESULT:0x80020003(DISP_E_MEMBERNOTFOUND))
的结果了
按我理解的范围内应该只需要改这几处数据。如果有需要我可以再补充下代码。
原因
这个可能不是代码的问题,
跟VS版本可能有关系
尝试解决方法
1、原先代码没修改之前是否在本机进行过运行,
如果没有的话那么大概率不是代码修改的问题,
而是VS版本问题,
尝试将VS版本进行升级解决这个问题。
如 将Visual Studio 升级到 16.9.1——问题就解决了
如有问题及时沟通
参考一下这个:
https://blog.csdn.net/qq_34059693/article/details/103162163
问题解决了,问题在
.range(.cells(5 + count, 21)) = xlke1
.range(.cells(5 + count, 22)) = xlke2
对单个数据不需要.range,直接
.cells(5 + count, 21) = xlke1
.cells(5 + count, 22) = xlke2
即可