给一个已被动态删除的控件数组元素属性赋值时
不提示任何信息
直接退出该过程
还有一个On Err错误处理(这个应该不是Bug在MSDN中已经有说明了)
打开错误处理后(使用了On Error Resume Next 或者错误其它处理方式时)
接连发生两个错误
此时判断Err.Number 的数值 来执行相应代码会出错的我的代码是这样的
Err.Number=0
On Error Resume Next 
intX=Button1(IntNum).Index   ' 这个控件数组不存在。。这里产生了错误。。已进入错误处理。。错误代码(Err.Number)为:340If Err.Number=0 AND Button1(IntNum).Visible Then  
   '看上面的AND运行符右表达式:Button1(IntNum) 是不存在的。。 在这里又产生一个错误  。。 
    '但程序会把这个IF判定为真!可能是因为Button1(intNum)不存在所以是“假”吧 。。
    '也可能是前面打开错误处理方式的原因。。'出现错误时继续执行下一行代码。。
    
    '出现这种情况。。 要命的程序会继续执行IF结构中的代码 -_-! End IF
'因为这两个东西我一个动态添加删除控件数组的东东写了两天呀。。一直找不出错误在哪里。。特别是前面所说的“VB BUG”什么都不提示。。继续运行 -_-!分享下。。 不要哪天也有VB朋友为了这种错误整个一两天。。 -_-!

解决方案 »

  1.   

    第一个没试过,去除on error会不会报错?
    第二个应该on error goto,然后再判断。
      

  2.   

    On Error Resume Next 就是忽略错误,当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。所以当然不报错。第二个情况一样,if 语句错了,同样执行下一句IF中的代码,并不是条件为true'
    On Error GoTo err
        intX=Button1(IntNum).Index   ' 这个控件数组不存在。。这里产生了错误。。已进入错误处理。。错误代码    If Err.Number=0 AND Button1(IntNum).Visible Then   
            '...........
        End IF err:
        debug.print err.description
      

  3.   

      
    第一种情况 我并没有开启错误处理。(没有使和任何On Error XXX语句) 
    如果访问一个不存在的控件VB应该会有错误提示的
    但他没有任何提示信息。。直接退出过程
      

  4.   


      这本来就是按照你的指示“On Error Resume Next”运行的,不是BUG吧!  在要出错的地方,用“On Error Resume Next”本来就会导致很多意想不到的问题,最好还是捕捉错误进行处
    理。我写的程序中,从来不会用“On Error Resume Next”这句,全部是用“On Error GoTo Lab_XXXX”捕获
    错误,根据需要,中断处理过程或 Resume Lab_nnnn 继续运行。