目的,用窗体中的函数,将两个二维数组的值传给Module中的过程/函数,在Module中完成相加后将结果返回给窗体中的数组,本人编的代码如下(运行提示,类型不匹配)
Private form1_load()
 dim a(1 to 3,1 to 4),b(1 to 3,1 to 4),c(1 to 3,1 to 4) as single
 dim i,j as integer
 for i=1 to 3
     for j=1 to 4
         a(i,j)=i+j
         b(i,j)=i*j
     next j
 next i
  
 call ArrAdd(a(),b(),c())  '出错之处,此行目的:将数组a()和b()的值传给过程ArrAdd的m()、n(),用c()带回ArrAdd中相加后所得的值ResultValue()数组,在这里就出错,不知怎么回事,请修改(ArrAdd()不变)
 
 for i=1 to 3
     for j=1 to 4
         print c(i,j)
     next j
 next i
end sub
Public Sub ArrAdd(m() As Single, n() As Single, ReturnValue() As Single)
     Dim i As Long, j As Long, row As Long, column As Long
     row = UBound(m, 1)
     column = UBound(m, 2)
     ReDim ReturnValue(1 To row, 1 To column)
     For i = 1 To row
          For j = 1 To column
               ReturnValue(i, j) = m(i, j) + n(i, j)
          Next
     Next
End Sub

解决方案 »

  1.   


        注意,dim i,j as single 相当于dim i as variant,j as single    要明确地写:dim i as single,j as single
      

  2.   

    Public Sub ArrAdd(m() As Single, n() As Single, ReturnValue() As Single)
         Dim i As Long, j As Long, row As Long, column As Long
         row = UBound(m, 1)
         column = UBound(m, 2)
         ReDim ReturnValue(1 To row, 1 To column)
         For i = 1 To row
              For j = 1 To column
                   ReturnValue(i)(j) = m(i)(j) + n(i)(j)
              Next
         Next
    End Sub
      

  3.   

    同意上面,dim i,j as single 相当于dim i as variant,j as single
    以前也犯过类似的错误,切记!!
      

  4.   

    dim i,j as single 相当于dim i as variant,j as single
      

  5.   

    dim i as long,j as long