在vba编程中,在from1上有一个multipage控件,它有多个page,但每个page上面都有一个combobox控件和一个listbox控件,combobox控件中加载表信息,每选择一个表,listbox中加载对应表的字段信息,因为多个page的操作类似,我能不能把这些操作抽出来,写成一个方法,这个方法如何写?参数如何传?能不能把listbox的名字作为参数传入??

解决方案 »

  1.   

    比如说我想几个页面上的 combobox加载相同的数据,我定义一个函数:
    Private Sub lstLoadTable(ByRef controlName As ComboBox)
        
        Dim cnt As Integer
        Dim i As Integer
        cnt = UBound(g_selected_tables)
        
        If cnt > 0 Then
        
            For i = 0 To cnt
                controlName.AddItem (g_selected_tables(i))
            Next
        End If
        
    End Sub加载的时候我直接传一个comboBox进去        lstLoadTable (combobox1)
            lstLoadTable (combobox2)
            lstLoadTable (combobox3)我这样做,系统出错,提示说:object required,为什么不能这样?
     
    谁解释一下?
      

  2.   

    call lstLoadTable (combobox1)
    call lstLoadTable (combobox2)
    call lstLoadTable (combobox3)
    或者
    lstLoadTable combobox1
    lstLoadTable combobox2
    lstLoadTable combobox3
      

  3.   

    楼上的兄弟,还是不行,错误信息如下:
    Compole error:
        Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound function.