Dim info As String
Dim temp() As String
Dim a() As String
Dim b() As String
Dim i As Integer
Dim sname As String
Dim shome As String
sckServer(Index).GetData info, vbStringinfo = Left(info, Len(info) - 1)
temp = Split(info, "*")   '这时候temp="黄永河*Y1101*茄汁香肠炒饭(5元)*腊味炒饭(5元)"
sname = temp(0)  '记录名字
shome = temp(1)  '记录宿舍'下面是记录点餐订单和价钱
For i = 2 To UBound(temp) - 1
a(i) = Left(temp(i), InStr(temp(i), "饭"))
b(i) = Mid(temp(i), Len(temp(i)) - 2, 1)
Next i程序运行到a(i) = Left(temp(i), InStr(temp(i), "饭"))时提示下标越界,请问怎么回事呢?

解决方案 »

  1.   

    因为数组a和b没有定义维数和大小:Dim info As String
    Dim temp() As String
    Dim a() As String
    Dim b() As String
    Dim i As Integer
    Dim sname As String
    Dim shome As String
    sckServer(Index).GetData info, vbStringinfo = Left(info, Len(info) - 1)
    temp = Split(info, "*")   '这时候temp="黄永河*Y1101*茄汁香肠炒饭(5元)*腊味炒饭(5元)"
    sname = temp(0)  '记录名字
    shome = temp(1)  '记录宿舍'下面是记录点餐订单和价钱
    Redim a(UBound(temp) - 1), b(UBound(temp) - 1)
    For i = 2 To UBound(temp) - 1
    a(i) = Left(temp(i), InStr(temp(i), "饭"))
    b(i) = Mid(temp(i), Len(temp(i)) - 2, 1)
    Next i
      

  2.   

    dim a() as string
    这样不是允许的吗?
      

  3.   

    dim a() as string这样写并没有申明这个数组的大小, 在Redim它的大小之前, 这个数组是不能使用的。
      

  4.   

    应该这样Dim info As String
    Dim temp() As String
    Dim a() As String
    Dim b() As String
    Dim i As Integer
    Dim sname As String
    Dim shome As String
    sckServer(Index).GetData info, vbStringinfo = Left(info, Len(info) - 1)
    temp = Split(info, "*")   '这时候temp="黄永河*Y1101*茄汁香肠炒饭(5元)*腊味炒饭(5元)"
    sname = temp(0)  '记录名字
    shome = temp(1)  '记录宿舍'下面是记录点餐订单和价钱
    Redim a(UBound(temp)), b(UBound(temp))
    For i = 2 To UBound(temp)
    a(i) = Left(temp(i), InStr(temp(i), "饭"))
    b(i) = Mid(temp(i), Len(temp(i)) - 2, 1)
    Next i