'比如:
'文件aa.txt如下:
2 4 2 4 1 3 15
4 6 2 4 1 3 15
6 8 2 4 1 3 15
8 10 2 4 1 3 15
10 12 2 4 1 3 15
12 14 2 4 1 3 15
2 4 2 6 1 3 15
4 6 2 6 1 3 15
6 8 2 6 1 3 15
8 10 2 6 1 3 15
 
调试时,提示错误13,调多次还是不行! 请大家帮助解决!
Sub 与文件中数据运算(strSourceFile As String, strTargetFile As String)
    Dim filenum         As Integer
    Dim fileContents    As String
    Dim fileInfo()      As String
    Dim h               As Integer
    Dim i               As Integer
    Dim j               As Integer
    Dim m               As Integer
    Dim n               As Integer
    Dim l               As Integer
    
    Dim yunshuan(1 To 15, 1 To 3) As Integer
    yunshuan(1, 1) = Mid(a1.Text, 1, 2)
    yunshuan(1, 2) = Mid(b1.Text, 1, 2)
    yunshuan(1, 3) = Mid(c1.Text, 1, 2)
    yunshuan(2, 1) = Mid(a2.Text, 1, 2)
    yunshuan(2, 2) = Mid(b2.Text, 1, 2)
    yunshuan(2, 3) = Mid(c2.Text, 1, 2)
    yunshuan(3, 1) = Mid(a3.Text, 1, 2)
    yunshuan(3, 2) = Mid(b3.Text, 1, 2)
    yunshuan(3, 3) = Mid(c3.Text, 1, 2)
    yunshuan(4, 1) = Mid(a4.Text, 1, 2)
    yunshuan(4, 2) = Mid(b4.Text, 1, 2)
    yunshuan(4, 3) = Mid(c4.Text, 1, 2)
  
        Dim tmpDemData As String
    filenum = FreeFile
    Open strSourceFile For Binary As #filenum
        fileContents = Space(LOF(filenum))
        Get #filenum, , fileContents
    Close filenum
    fileInfo = Split(fileContents, vbCrLf)
    '取出源文件行数,按照回车换行来分隔成数组
    
    filenum = FreeFile
    tmpDemData = ""
    If Dir(strTargetFile, vbNormal) <> "" Then
        Kill strTargetFile
    End If
    Dim Filestr() As String    Open strTargetFile For Append As #filenum
        '循环每一行
        For h = 0 To UBound(fileInfo) - 1
            Filestr = Split(Trim(fileInfo(h)), " ")  '按照空格分隔每一行的数据
            tmpDemData = ""
            For i = 0 To UBound(Filestr)
                '判断
                
                
                
             For l = (i + 1) To 7
      
              tmpDemData = ""
              For n = 1 To 3
       
                For m = 1 To 3
                 If i < 7 Then tmpDemData = tmpDemData & Abs(yunshuan(Filestr(i), n) - yunshuan(Filestr(l), m)) & ","
             
                Next m
          
              Next n
              Print #filenum, tmpDemData
            Next l
                
            Next i
            '保存一行如目标文件
            Print #filenum, tmpDemData
        Next h
    Close #filenum
    MsgBox "完毕"
End Sub Private Sub Command3_Click()
与文件中数据运算 "d:\aa.txt", "d:\bb.txt"End Sub

解决方案 »

  1.   

    我把你的代码和数据复制过来运行,只遇到:
    实时错误'9':下标越界。没遇到错误13。把你的代码中:
    If i < 7 Then tmpDemData = tmpDemData & Abs(yunshuan(Filestr(i), n) - yunshuan(Filestr(l), m)) & ","
    改成:
    If l < 7 Then tmpDemData = tmpDemData & Abs(yunshuan(Filestr(i), n) - yunshuan(Filestr(l), m)) & ","
    就没问题了。你的错误'13'是不是出现在给 yunshuan( ) 赋值的那一段代码中呀?
    如果是的话,那是因为你的那一堆 TextBox 中为空或输入的不是正确的数字造成的。
    自己的代码在哪句提示出错也不说清楚,让别人去猜,怎么好解决问题?你以为别人的时间都很多呀!!!
      

  2.   

        Dim yunshuan(1 To 15, 1 To 3) As Integer 
        yunshuan(1, 1) = Mid(a1.Text, 1, 2) 
        yunshuan(1, 2) = Mid(b1.Text, 1, 2) 
        yunshuan(1, 3) = Mid(c1.Text, 1, 2) 
        yunshuan(2, 1) = Mid(a2.Text, 1, 2) 
        yunshuan(2, 2) = Mid(b2.Text, 1, 2) 
        yunshuan(2, 3) = Mid(c2.Text, 1, 2) 
        yunshuan(3, 1) = Mid(a3.Text, 1, 2) 
        yunshuan(3, 2) = Mid(b3.Text, 1, 2) 
        yunshuan(3, 3) = Mid(c3.Text, 1, 2) 
        yunshuan(4, 1) = Mid(a4.Text, 1, 2) 
        yunshuan(4, 2) = Mid(b4.Text, 1, 2) 
        yunshuan(4, 3) = Mid(c4.Text, 1, 2) 我觉得是这里的问题吧,mid的第一个参数我记得得传字符串进去的,LZ直接传了文件名,而且还是没引号的,怎么可能正确
      

  3.   

    Dim yunshuan(1 To 15, 1 To 3) As Integer 
        yunshuan(1, 1) = Mid(a1.Text, 1, 2) 
        yunshuan(1, 2) = Mid(b1.Text, 1, 2) 
        yunshuan(1, 3) = Mid(c1.Text, 1, 2) 
        yunshuan(2, 1) = Mid(a2.Text, 1, 2) 
        yunshuan(2, 2) = Mid(b2.Text, 1, 2) 
        yunshuan(2, 3) = Mid(c2.Text, 1, 2) 
        yunshuan(3, 1) = Mid(a3.Text, 1, 2) 
        yunshuan(3, 2) = Mid(b3.Text, 1, 2) 
        yunshuan(3, 3) = Mid(c3.Text, 1, 2) 
        yunshuan(4, 1) = Mid(a4.Text, 1, 2) 
        yunshuan(4, 2) = Mid(b4.Text, 1, 2) 
        yunshuan(4, 3) = Mid(c4.Text, 1, 2) 
    赋值的这段代码会出问题,最好在赋值前进行合法性检查
      

  4.   


    晕了,我看错了,传的是文本框的Text不是txt文件,那就是有的文本框为空导致的错误