Private Sub Command1_Click()Dim filename,instring,a(36),b() As String
Dim i,j As Integer
Dim arry(0 To 36, 0 To 72), arry1(0 To 36, 0 To 72) As Singlefilename = "\\Micaps-server\micapsdata\ecmwf\pressure\999\" + Format(Date, "yymm") + LTrim(Str(Format(Date, "dd") - 1)) + "20" + ".000"Open filename For Input As #1
Line Input #1, instring
Line Input #1, instring
Line Input #1, instring
instring = ""       /读前面3行,不要的 '将37个数据块读入字符串数组a(i)For i = 0 To 36
    For j = 0 To 8
        Line Input #1, instring
        a(i) = a(i) + instring
    Next j
Next i'切割数组,把数值附到二维数组arry(),73列,第一列为空,每行前面有3个空格,所以分割的时候有73个元素。For i = 0 To 36
    b() = Split(a(i), Space(3))
    For j = 0 To UBound(b)
        arry(i, j) = b(j)
    Next j
Next i
Close #1
End Sub
前面编译的时候没有出错,debug.arry(0,1)得到了正确数据,因为还要同样处理其他文件,我把前面的重新粘贴,改了下打开的文件名,数组用arry( ,)接收数据,结果提示“b() = Split(a(i), Space(3))” 类型不匹配,b()的下标又原来的72变为144,难道重复使用split()下标要累加??
改c(),也不行。后面把重新粘贴的这段去掉,还是提示原来的“b() = Split(a(i), Space(3))” 类型不匹配。
split()返回的应该是一个1维数组,用字符串数组b(),接收为什么会出错,搞不懂,请哪位大侠指教!
==============================================
源数据
diamond 4 9年4月16日20点ECMWF_海平面气压17日20点预报
 9 4 16 20 24 999    2.500    2.500    0.000  177.500    0.000   90.000 72 37
   4.0    988.0   1036.0 0 0   1012.4   1011.8   1012.1   1010.4   1010.1   1009.9   1008.9   1008.2   1008.1   1008.5
   1008.4   1008.9   1009.0   1011.2   1011.1   1013.1   1006.8   1008.2   1008.2   1007.6
   1007.9   1007.3   1007.3   1007.3   1007.2   1007.2   1007.0   1007.3   1007.2   1007.0
   1006.7   1006.4   1006.5   1006.7   1006.8   1006.8   1006.8   1007.0   1007.2   1007.6
   1009.3   1007.0   1007.8   1008.1   1008.3   1010.1   1010.8   1009.6   1010.0   1010.3
   1009.8   1009.9   1010.2   1009.5   1009.4   1009.9   1010.2   1010.0   1010.2   1009.7
   1009.5   1010.0   1009.6   1009.3   1009.4   1008.4   1009.0   1009.0   1009.1   1009.2
   1009.1   1009.0   1012.1   1012.2   1011.2   1010.3   1010.1   1010.3   1008.4   1008.3   1008.5   1008.7
   1008.3   1007.7   1008.7   1009.2   1009.1   1006.1   1009.1   1008.5   1007.2   1007.3
   1007.5   1007.4   1007.5   1007.4   1007.8   1007.4   1007.1   1007.1   1006.9   1006.6
   1006.4   1006.2   1006.1   1006.4   1006.4   1006.5   1006.6   1006.6   1006.9   1007.4
   1006.9   1007.2   1007.7   1008.0   1008.6   1009.4   1014.7   1010.1   1009.6   1009.9
   1010.3   1009.9   1010.2   1009.6   1009.6   1009.3   1010.1   1010.2   1009.9   1010.0
   1010.0   1009.8   1009.3   1008.9   1008.9   1008.5   1008.8   1008.9   1008.9   1008.8
   1008.8   1008.7

解决方案 »

  1.   

    把 接收数组改为string类型 还是不行,或是写成arry(i,j)=val(b(j)),还是提示上面那行“b() = Split(a(i), Space(3))” 出错。
      

  2.   

    我是初学者,请问从txt文件里读数据到数组有没有什么更好的方法或函数啊?
      

  3.   

    又是没分贴  
    一次全部读入一个变量里  再用Split 来处理
      

  4.   

     一次性读入再分割
    Do While Not EOF(1)
         Line Input #1, tmp
       instring = instring + tmp
       Loop
    'Debug.Print instring
    b() = Split(instring, Space(3))还是提示:b() = Split(a(i), Space(3)) 类型不匹,为什么啊????