我08年写的程序,在部分电脑一直运行到10年6月,都很正常。但是我近期把程序放到另外一部分电脑运行时,却发生“运行时错误 13,类型不匹配”在我电脑上运行、调试都完全OK,找不到原因,是在没办法就在每句语句右面加msgbox "11"才发现出错的语句,最终找找报错行
      Set tvchart(i - 1) = New cTchart
      MsgBox "1"
      Set tvchart(i - 1).Chart = Me.Controls.Add("TeeChart.Tchart", "tchartObj" & Str(i - 1))'此行报错
      MsgBox "2"
当时i=1,cTchart是定义的一个类模块
'用类模块!实现动态创建控件数组,并且可以编辑事件
Option Explicit
Private WithEvents mvarTChart As TChart   'WithEvents允许事件响应
Public Property Set Chart(ByVal vData As TChart)
    Set mvarTChart = vData
End Property
Public Property Get Chart() As TChart
    Set Chart = mvarTChart
End PropertyPrivate Sub mvarTChart_OnClick()
   frmTopView.TeeCommander1.Chart = mvarTChart
End SubPrivate Sub mvarTChart_OnDblClick()
   frmTopView.VScroll1.SetFocus
End SubTeeChart.Tchart是流行的Tchart,第三方控件,控件已经注册了。请高手看看,什么原因?

解决方案 »

  1.   


         Set tvchart(i - 1) = New cTchart
          MsgBox "1"
          Set tvchart(i - 1).Chart = Me.Controls.Add("TeeChart.Tchart", "tchartObj" & CStr(i - 1))'<-----
          MsgBox "2"
      

  2.   

    Set tvchart(i - 1).Chart = Me.Controls.Add("TeeChart.Tchart", "tchartObj" & CStr(i - 1))'<---------
      

  3.   

    try
    Set tvchart(i - 1).Chart = Me.Controls.Add("TeeChart.Tchart", "tchartObj" & format(i - 1))
      

  4.   

    Private Sub mvarTChart_OnClick()
       set frmTopView.TeeCommander1.Chart = mvarTChart
    End Sub
      

  5.   

    我是在部件里面添加了部件(ocx),如果在引用里面再加的话提示冲突
      

  6.   

    CStr(i - 1)、format(i - 1)
    问题照旧
      

  7.   

    看下frmTopView.TeeCommander1.Chart 类型跟后面的类型是否一致
      

  8.   

    保证出错窗体使用了 Option Explicit
     吗?
      

  9.   

    lz可以这样尝试一下,把你系统中所有调用的dll、ocx等系统文件都以强制覆盖方式安装到出错的计算机
      

  10.   

    为了更准确找到问题点,我在其它窗体简化代码如下
       Dim tt As TChart
       Set tt = Me.Controls.Add("TeeChart.Tchart", "tchartObj")
    同样问题发生
      

  11.   


    我又写了如下代码
       Dim ta As CommandButton
       Set ta = Me.Controls.Add("VB.CommandButton", "testgg")
    运行正常,所以问题我猜还是处在第三方控件上,TChart,
    该控件我用regsvr32注册了啊,不知道怎么回事,请高手指点阿
      

  12.   

    少部分电脑未作相应Windows Update?
    少部分电脑用的是正版Windows?
      

  13.   

    出现这个问题有可能是WINDOWS查找的文件与你引用的文件不一致导致的。试试:
    1.在注册表中搜索TeeChart.Tchart,凡是CLSID的全部删除;
    2.然后搜索你的控件看看是不是多处存在相同的文件;
    3.重新注册你的控件。最后一步:   Dim tt As Object
       Set tt = Me.Controls.Add("TeeChart.Tchart", "tchartObj")或者改成:   Dim tt As TeeChart.TChart
       Set tt = Me.Controls.Add("TeeChart.Tchart", "tchartObj")