CallByName 函数执行一个对象的方法,或者设置或返回一个对象的属性。语法CallByName(object, procedurename, calltype,[arguments()])CallByName 函数的语法有以下部分:部分 描述 
object 必需的;变体型(对象)。函数将要执行的对象的名称。 
procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。 
calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。 
arguments() 可选的:变体型(数组)。 
说明CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:CallByName Text1, "MousePointer", vbLet, vbCrosshair
Result = CallByName (Text1, "MousePointer", vbGet)
CallByName Text1, "Move", vbMethod, 100, 100

解决方案 »

  1.   

    VBControlExtender类当然只有默认的属性你应该把myControl定义为MytestOCX型
      

  2.   

    zyl910(910:分儿,我来了!) (L2002) :
        动态加载控件啊!!!我上哪里定义MytestOCX型啊???!!!
    继续!newyon() :
      直接访问都不行,用CallByName行???
      

  3.   

    Set myControl = Controls.Add("OurtestOCX.MytestOCX", "MyOcx")
                                             ^^^^^^^^^
      

  4.   

    My god!这个我知道。我想执行:myControl.AddRow
      

  5.   

    就是有一个OCX要动态加载,这个OCX有一个方法AddRow,我想执行AddRow。
    用VBControlExtender只有默认的属性和方法。
      

  6.   

    Dim WithEvents myControl As MytestOCX
      

  7.   

    No,这个OCX需要动态加载,不可以Dim WithEvents myControl As MytestOCX
      

  8.   

    Dim WithEvents myControl As VBControlExtenderPrivate Function LoadControl()
    Dim TempCtl as ControlIf Not myControl Is Nothing Then
       Controls.Remove ("MyOcx")
    End IfSet TempCtl = Controls.Add("OurtestOCX.MytestOCX", "MyOcx")
    TempCtl.Height = 3500
    TempCtl.Width = 6500
    TempCtl.Top = 100
    TempCtl.Visible = True
    TempCtl.AddRowSet myControl=TempCtl
    End Function
      

  9.   

    Dim WithEvents myControl As MytestOCX 和下面两句是一样的效果
    Dim WithEvents myControl As VBControlExtender
    Set myControl=TempCtl所以还是不行。