Private Sub MSComm1_OnComm()
Dim rcv_array() As Byte
Dim strkk As String
Dim ss As String
Dim rcv_len, i, j As Integer
rcv_array = MSComm1.Input
rcv_len = UBound(rcv_array)
ReDim rcv_array(0 To UBound(rcv_array)) As Byte
rcv_array = MSComm1.Input
For i = 1 To rcv_len 
 
If Hex(rcv_array(i)) = "FF" Then
在最后这句 Hex(rcv_array(i))  时 就会提示错误
不知道 怎么回事

解决方案 »

  1.   

    你的 UBound(rcv_array)=0就会报这个错
    For i = 0 To rcv_len '从0开始就好了
      

  2.   

    For i = LBound(rcv_array) To rcv_len 
      

  3.   

    参考:http://www.vbgood.com/viewthread.php?tid=83694&page=1#pid441972Private Sub MSComm1_OnComm()
        Dim rcv_array() As Byte
        Dim strkk As String
        Dim ss As String
        Dim rcv_len, i, j As Integer
        Select Case MSComm1.CommEvent
            Case comEvReceive
                rcv_array = MSComm1.Input
                For i = 0 To UBound(rcv_array)
                    ss = ss & Right("0" & Hex(rcv_array(i)), 2)
                    Debug.Print ss
                    If Hex(rcv_array(i)) = "FF" Then
                    '
                    End If
                Next
        End Select
    End Sub
      

  4.   

    第二句 rcv_array = MSComm1.Input 是多余的,应该删除,否则 rcv_array 又变化了。
      

  5.   

    回复于:2010-03-02 11:13:35For i = LBound(rcv_array) To rcv_len  
       回复 跟那没有关系,我的rcv_array 是一个数组,for 循环应该跟那没有关系
       另外 rcv_array = MSComm1.Input 是将通讯接受的数据放到 rcv_array 数组里面的
    再次感谢 大家的热心帮助,期待ing.................
      

  6.   

    rcv_len = UBound(rcv_array) 这是第一次 Input 返回数组的上界,再次调用 rcv_array = MSComm1.Input 数组的上界已经变化,再用旧的上界进行循环遍历当然可能越界了。
      

  7.   


    rcv_len = UBound(rcv_array) 有可能是 0,即只有 1 个成员。索引 1 当然就越界了。