Private Sub AnalyDataInfo(ByRef DataArr() As Integer)
Dim MeterNum As Long     '表号
Dim Count As Integer
Dim FileName As String   '文件名称
Dim FilePath As String   '文件路径
Dim countint As Integer
' On Error GoTo AnalyDataInfoErr
' LCommInfo.Caption = "计算表具数据..............."
   '形成文件名
   '计算出表号
  MeterNum = DataArr(7) * CLng(256 ^ 3) + DataArr(6) * CLng(256 ^ 2) + DataArr(5) * CLng(256) + DataArr(4)
  
  FileName = IIf(Len(App.Path) > 3, App.Path & "\", App.Path) & "Data\" & CStr(MeterNum) & "-" & Year(Date) & Right("00" & Month(Date), 2) & Right("00" & Day(Date), 2) & "-" & Right("00" & Hour(Time), 2) & Right("00" & Minute(Time), 2) & Right("00" & Second(Time), 2) & ".TXT"
  Open FileName For Output As #1
      Write #1, "表号:" & CStr(MeterNum)
      Write #1, "采集时间:" & Date & " " & Time
  For Count = 0 To (UBound(DataArr) - 7) \ 2
      If Count <= (UBound(DataArr) - 7) \ 2 Then
         Write #1, DataArr(Count * 2 + 8) * 256 + DataArr(Count * 2 + 9)
         countint = countint + 1
      Else
          Exit For
      End If
  Next Count
  Write #1, "共有" & countint & "条记录"
  Close #1
 
  SendOK   '发送接收完毕消息
 
 '显示抄表完成
 
 CallNext   '呼叫下一个
Exit Sub
AnalyDataInfoErr:
' Call DealOtherWrong("AnalyDataInfo", Err.Number, Err.Description)
End Sub
其中:
 For Count = 0 To (UBound(DataArr) - 7) \ 2    (其中DataArr的值是1358)
   Write #1, DataArr(Count * 2 + 8) * 256 + DataArr(Count * 2 + 9)
 Next Count
就是在Count循环675次时报错(这句DataArr(Count * 2 + 9)报下标越界错误)
 请问各位高手该怎么解决啊???

解决方案 »

  1.   

    这样试试看~Dim Count As Long
      

  2.   

    i=UBound(DataArr) - 7) \ 2
    do while Count * 2 + 9<=UBound(DataArr) and Count<=i
    Write #1, DataArr(Count * 2 + 8) * 256 + DataArr(Count * 2 + 9)
    Count=Count+1
    loop
      

  3.   

    注意:DIM A(1000)这条语句默认的上下标是0和999
      

  4.   

    i=UBound(DataArr) - 7) \ 2
    do while Count * 2 + 9<=UBound(DataArr) and Count<=i
    Write #1, DataArr(Count * 2 + 8) * 256 + DataArr(Count * 2 + 9)
    Count=Count+1
    loop
    在执行时根本都没执行Write #1, DataArr(Count * 2 + 8) * 256 + DataArr(Count * 2 + 9)这句
    请各位高手帮帮忙,谢谢