'比如:
'文件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
'文件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
实时错误'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 中为空或输入的不是正确的数字造成的。
自己的代码在哪句提示出错也不说清楚,让别人去猜,怎么好解决问题?你以为别人的时间都很多呀!!!
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直接传了文件名,而且还是没引号的,怎么可能正确
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)
赋值的这段代码会出问题,最好在赋值前进行合法性检查
晕了,我看错了,传的是文本框的Text不是txt文件,那就是有的文本框为空导致的错误