Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte
Dim strBuff As Variant
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0
strBuff = MSComm1.Input
BytReceived() = strBuff
Dim i As Long
For i = 0 To UBound(BytReceived)
Debug.Print BytReceived(i)
Next
If i <= 2 Then
Text2 = BytReceived(0)
BytReceived(0) = 0
Else
tongyi = BytReceived(0)
BytReceived(0) = 0
fandui = BytReceived(2)
BytReceived(2) = 0
qiquan = BytReceived(4)
BytReceived(4) = 0
End If
End Select我这段代码那里有问题 为什么运行时经常出现 错误9,“下标越界” 调试时总指在qiquan = BytReceived(4)这一行我也从网上看了相关的资料,知道是数组方面的问题,但改了几次之后,还是一直有错误,希望可以在这里得到解决!!!
For i = 0 To UBound(BytReceived)'2个字节时,此值为3
Debug.Print BytReceived(i)
Next
'到此,i=4If i <= 2 Then
'因为i=4,本段不执行
Text2 = BytReceived(0)
BytReceived(0) = 0
Else
'执行本段
tongyi = BytReceived(0)
BytReceived(0) = 0
fandui = BytReceived(2)
BytReceived(2) = 0
qiquan = BytReceived(4) '数组上限为3,越界产生
BytReceived(4) = 0
End If
while(!TI);
TI=0;
SBUF=fandui;
while(!TI);
TI=0;
SBUF=qiquan;
while(!TI);
TI=0;所以说我每次都发送了3个字节的数据 如果是这样的错误我应该怎么该?
Rthreshold =3
然后再测试你代码看看
还是不行。
if UBound(BytReceived)<4 then
redim preserve BytReceived(4)
end if