功能:点击按钮就可以把文本里的字符串按行定时发送
代码:Private Sub Command1_Click()
Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
Static i As Long, count As Long
arr = Form1.GetArray(GetWenjian)
count = UBound(arr)Debug.Print arr(i)  '进行测试
'MSComm1.Output = arr(i)
i = i + 1
If i > count Then
 i = i - count - 1
End If
End SubFunction GetWenjian() As String
Dim strInPutData As String, strOut As String
Open App.Path & "\2.txt" For Input As #2
Do While Not EOF(2)
 Line Input #2, InPutData
 strOut = strOut + strInPutData + vbCrLf
Loop
Close #2
End FunctionFunction GetArray(strWenben As String) As String()
Dim myarray() As String
myarray = Split(strWenben, vbCrLf)
GetArray = myarray
End Function
错误提示:下标越界Debug.Print arr(i) 
希望高手可以修改代码 或给个相似的代码实现相同的功能

解决方案 »

  1.   

    测试一下
    Function GetWenjian() As String
    的返回值貌似由于返回值是空 -->GetArray生成的数组也为空--->arr为空--->Debug.Print arr(0)出错
      

  2.   

    仔细看了一下代码
    应该是这样的
    Function GetWenjian() As String
    Dim strInPutData As String, strOut As String
    Open App.Path & "\2.txt" For Input As #2
    Do While Not EOF(2)
     Line Input #2, InPutData
     strOut = strOut + strInPutData + vbCrLf
    Loop
    Close #2
    GetWenjian=strOut
    End Function
      

  3.   


    Function GetWenjian() As String
    Dim strInPutData As String, strOut As String
    Open App.Path & "\2.txt" For Input As #2
    Do While Not EOF(2)
     Line Input #2, InPutData
     strOut = strOut + strInPutData + vbCrLf
    Loop
    Close #2
    GetWenjian=strOut
    End Function
      

  4.   

    我找到原因了  除了你说的那个还有下面的原因
    Function GetWenjian() As String
    Dim strInPutData As String, strOut As String
    Open App.Path & "\2.txt" For Input As #2
    Do While Not EOF(2)
     Line Input #2, InPutData '这里和下面的变量名称不一样,所以没有读进来 
     strOut = strOut + strInPutData + vbCrLf
    Loop
    Close #2
    GetWenjian=strOut
    End Function
    还有一个问题就是文件号不是2 而是1 我也不知道为什么 ,改成1就可以了