如新建一个标准工程,添加一控件button 名为 cmdButton1,把cmdButton1作为参数传给TestSub,报"Run-time error'13':type mismatch",重装系统前还是好的,现在不知道少了些什么东东就变的不能用了,还望高手不吝赐教,谢了先!代码如下:'引用了控件:Microsoft windows common controls 6.0(sp6)Private Sub Form_Load()
    TestSub cmdButton1
End SubPrivate Sub TestSub(ByVal cmdTestButton As Button)
    MsgBox cmdTestButton.Caption
End Sub

解决方案 »

  1.   

    '引用了控件:Microsoft windows common controls 6.0(sp6)Private Sub Form_Load()
        TestSub cmdButton1
    End SubPrivate Sub TestSub(Byref cmdTestButton As Button)
        MsgBox cmdTestButton.Caption
    End Sub------------------------
    button是类对象,不能传值,应该传址
      

  2.   

    对不起,没看清楚,呵呵
    ----------------------------
    Private Sub Form_Load()
        TestSub cmdButton1
    End SubPrivate Sub TestSub(ByRef cmdTestButton As CommandButton)
        MsgBox cmdTestButton.Caption
    End Sub
      

  3.   

    Debug.Print TypeName(cmdButton1) 是什么?
      

  4.   

    toury(理上网来)
    的可以实现啊
      

  5.   

    回 Tiger_Zhao(VB老鸟):   Debug.Print TypeName(cmdButton1) 输出的是 CommandButton ,其实我的程序是要传Toolbar上的Button过去的,Debug.Print TypeName(Toolbar1.Buttons(1)) 输出的是IButton,字面上来说IButton<>Button,程序报类型不匹配是对的,可为什么在其他人的电脑上就不报错,可以正常运行呢,不知这其中是何种机理
      

  6.   

    Rose2007() ,是的,在你电脑不报错是正常的,因为只有在我的电脑上报错,办公室里面其他人的电脑都不报错,呵呵
      

  7.   

    明确声明Private Sub TestSub(ByVal cmdTestButton As VB.CommandButton)
    或者
    Private Sub TestSub(ByRef cmdTestButton As VB.CommandButton)
      

  8.   

    如果对类型不确定也可以  As Object
      

  9.   

    你的cmdButton1是工具条上的Button吗?那么这样才行:
    TestSub Me.Toolbar1.Buttons("cmdButton1")如果你的cmdButton1是CommandButton,当然类型不正确
      

  10.   

    找到了一点线索,是因为程序中引用了 Microsoft Excel 11.0 Object Library 才会出现这种情况,若不引用这个,就没问题,高手来帮忙指导一下是怎么回事啊
      

  11.   

    找到原因了,是因为程序中引用了 Microsoft Excel 11.0 Object Library 才会出现这种情况,若不引用这个,就没问题,高手来帮忙指导一下是怎么回事啊
      

  12.   

    感觉和excel 11 object不相干Button和CommandButton是二个类,你在窗体上添加的cmdButton1属于CommandButton,而你TestSub函数中的参数声明的是Button类,所以传入cmdButton1调用这个函数出错。你的错误提示很明确。
      

  13.   

    Private Sub Command1_Click()
        TestSub toolbar1.Buttons(3)
    End SubPrivate Sub TestSub(ByVal objButtonKey As Button)
        MsgBox objButtonKey.Key
    End Sub
    上述这些代码,有Microsoft Excel 11.0 Object Library 引用就报错,不引用就不报错
      

  14.   

    发表者:zjcxc
    应该是没引用的问题,你照一楼的方法做,如果不行,就改:   
      dim   xlapp   as   excel.application   定义excel类     
      dim   xlbook   as   excel.workbook   定义工件簿类   
      dim   xlsheet   as   excel.worksheet   定义工作表类   
      为   
      dim   xlapp   as   object   定义excel类     
      dim   xlbook   as   object   定义工件簿类   
      dim   xlsheet   as   object   定义工作表类   
      这种方法是不需要引用的,只需要装了excel就行.   网上查到了zjcxc 这位仁兄的解决方法,把EXCEL的引用拿掉了。另外大家有没有知道为什么这 Microsoft Excel 11.0 Object Library  会和toolbar冲突,知道的分享一下啊
      

  15.   

    如果真是EXCEL对象的问题,原因就不清楚,不过你这样试一下:Private Sub TestSub(ByVal objButtonKey As MSComctlLib.Button)
        MsgBox objButtonKey.Key
    End Sub应该没问题了