下面是我的一段示例程序:
    public sub aa(Btn() as CommandButton)
        msgbox btn(0).caption
    end sub    Privat sub Form1_click()
        aa(command1)
    end sub
   其中,command1是按钮数组名,index范围从0到3
结果报错:“编译错误:类型不匹配:缺少数组或用户定义类型”
请问是什么原因,该如何解决?

解决方案 »

  1.   

    能告诉我们 你想做到具体什么功能吗?好象觉得传控件数组没多大的必要。在 Privat sub Command1_click(index as integer) 里处理事件不是可以满足了吗?
      

  2.   

    控件数组,其实并不是一个数组.而应该是vb的一个 控件集合.
    所以你更本不能定义一个数组来传递..
    我也不是很明白你要实现的意思.
    如果你非要这么做的话.可以这么写
    Public Sub aa(btn As CommandButton)
          Dim btnTemp As CommandButton
        For Each btnTemp In Form1.Controls
           If btn.Name = btnTemp.Name Then
             '这里注意下面这句等同你的'msgbox btn(0).caption 
             If btnTemp.Index = 0 Then MsgBox btnTemp.Caption
             '如果你要'msgbox btn(1).caption                 
             '则下面相应的改变需要判断的index就可以了 也改为1
             'If btnTemp.Index = 1 Then MsgBox btnTemp.Caption         
           End If
        Next
    End Sub
    '还有注意调用 过程 aa 的时候 你只能这样传递,传递控件数组的任何一个对象
    Privat sub Form1_click()
            aa(command1(0)) '可以是0也可以是其他
    end sub
      

  3.   

    vb过程中的参数如果用数组的话,一定是variant类型的。
      

  4.   

    用 Object    public sub aa(Btn as Object)
            msgbox btn.item(0).caption
        end sub    Privat sub Form1_click()
            aa(command1)
        end sub