请高手指点数组问题!谢谢了!

lowsea 2004-01-01 11:07:44
我想对一个数组进行操作,参数是一个不一定大小的数组,在写函数的时候怎么定义参数,我的数组必须是二维的
代码如下:
Dim matrixi As String '矩阵output
Private Sub Prints(ByRef group() As Double) '处理一个二维数组到矩阵模式的转换
Dim rows As Integer '目标矩阵的行数
Dim cols As Integer '目标矩阵的列数
Dim k As Integer
Dim l As Integer

matrixi = ""
rows = UBound(matrixd, 1)
cols = UBound(matrixd, 2)
For k = 0 To rows
For l = 0 To cols
matrixi = matrixs & " " & group(k, l)
Next l
matrixi = matrixi & vbCrLf
Next k
Debug.Print matrixi
End Sub
调用:
dim test() as double 'test 是一个二维数组
prints(test)' 出错了

错误提示是:编译错误,类型不匹配,或数组为定义
可是我有定义阿!
谢谢了各位高手!
救救小弟啊!
...全文
87 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lowsea 2004-01-03
  • 打赏
  • 举报
回复
问题解决了
我在调用prints函数的时候写的是:prints(test) 写成prints test就对了?
嗬嗬!这是为什么啊?
northwolves 2004-01-01
  • 打赏
  • 举报
回复
Dim matrixi As String '矩阵output
Dim test() As Double
Private Sub Prints(ByRef group() As Double) '处理一个二维数组到矩阵模式的转换
Dim rows As Integer '目标矩阵的行数
Dim cols As Integer '目标矩阵的列数
Dim k As Integer
Dim l As Integer

matrixi = ""
rows = UBound(group, 1)
cols = UBound(group, 2)
For k = 0 To rows
For l = 0 To cols
matrixi = matrixi & " " & group(k, l)
Next l
matrixi = matrixi & vbCrLf
Next k
Debug.Print matrixi
End Sub



Private Sub Command1_Click()
getnine '返回外部数组
Prints test()
End Sub
Sub getnine()
ReDim test(8, 8)
Dim i As Integer, j As Integer
For i = 0 To 8
For j = 0 To 8
test(i, j) = IIf(i >= j, i + 1, 0)
Next
Next
End Sub
Huaraco 2004-01-01
  • 打赏
  • 举报
回复
如果是的话,那三楼说得就没错,不用管command1_click就是了.他的prints函数应该符合你的要求。
Huaraco 2004-01-01
  • 打赏
  • 举报
回复
是不是光给prints函数就行了?
lowsea 2004-01-01
  • 打赏
  • 举报
回复
自己再up一下啊!
lowsea 2004-01-01
  • 打赏
  • 举报
回复
看来是我没有说清楚我的情况,test是我另一个函数返回的一个动态的数组,是一个二维的
,然后我想把它利用prints把它转化为矩阵形式的表示,我呢现在只是想给prints函数一个参数,告诉他对group数组进行转化就好,就像C语言中给他一个数组的首地址一样,至于test也就是group是几行几列我的再prints里面解决!
Huaraco 2004-01-01
  • 打赏
  • 举报
回复
三楼说的
rows = UBound(group, 1)
cols = UBound(group, 2)
就是返回行里的呀。
Huaraco 2004-01-01
  • 打赏
  • 举报
回复
to 三楼
Private Sub Command1_Click()
Dim test() As Double 'test 是一个二维数组
For i = 0 To 3
For j = 0 To 4
redim preserve test(i,j) as double
test(i, j) = i * j
Next
Next
Prints test
End Sub
这样才可以实现动态
Huaraco 2004-01-01
  • 打赏
  • 举报
回复
matrixi = ""
rows = UBound(matrixd, 1)
cols = UBound(matrixd, 2)
这是不对的,matrixd不是数组,使字符串呀。不能这么用。
获知字符串长度可用len(matrixd)
lowsea 2004-01-01
  • 打赏
  • 举报
回复
补充以下,那个test是一个别的函数返回的二维数组,不能确定它的行和列怎么解决啊?
northwolves 2004-01-01
  • 打赏
  • 举报
回复

Dim matrixi As String '矩阵output
Private Sub Prints(ByRef group() As Double) '处理一个二维数组到矩阵模式的转换
Dim rows As Integer '目标矩阵的行数
Dim cols As Integer '目标矩阵的列数
Dim k As Integer
Dim l As Integer

matrixi = ""
rows = UBound(group, 1)
cols = UBound(group, 2)
For k = 0 To rows
For l = 0 To cols
matrixi = matrixi & " " & group(k, l)
Next l
matrixi = matrixi & vbCrLf
Next k
Debug.Print matrixi
End Sub



Private Sub Command1_Click()
Dim test(3, 4) As Double 'test 是一个二维数组
For i = 0 To 3
For j = 0 To 4
test(i, j) = i * j
Next
Next
Prints test
End Sub
Huaraco 2004-01-01
  • 打赏
  • 举报
回复
你不redim test数组怎么行。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧