当前位置:编程学习 > VB >>

Excel工作表名变更时触发的动作

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

在有些工作簿中,当工作表名变更时会自动触发上面的方法;但有的工作簿中就不触发,怎么设置 excel,vba,sheet名变更 --------------------编程问答-------------------- 一、
问题大概已解决: 
    在sheet2中的单元格引用sheet1中的值,例如sheet2中某一个单元格=sheet1.Name!A1,
    当sheet1表名称变更时,就会触发重计算方法(sheetCalculate方法),然后就能实时的
    判断表名是否变更。
二、
然而问题又来了,Excel2003,2007下这样是OK的,但在2010下就不行了,目前的解决办法是:
    在vba里面用代码去指定引用:
    Application.EnableEvents = False
    Sheet2.Cells(1,1).NumberFormatLocal = “G/标准”
    Sheet2.Cells(1,1) = “=‘” & Sheet1.Name & "'!A1"
   Application.EnableEvents = True
   在指定之前要把事件执行设置为False,要不然就又不好使了,而且这样设置只能触发一次,
    如果想再次触发就必须再执行上面的代码,所以把代码加在了SheetCalculate方法中,只
    要触发一次就设置一次。
三、
虽然问题已解决,但是2010下不好用的根本原因还是不明白,表面原因是2010下手动去设置引用时,程序会即时执行一次SheetCalculate方法,之后更改引用的sheet名就不会重新触发,如果用代码先把Application.EnableEvents = False,然后再用代码设置引用,再把Application.EnableEvents = true,这时不会即时地去触发SheetCalculate方法,再去更改引用sheet名时就会触发一次,之后再更改就不会触发。望Excel2010的有识者知道根本原因的请不吝赐教

--------------------编程问答-------------------- 公司一牛人把公式改了下 sheet2中某一个单元格=sheet1.Name!A1 + 100*Rand(),问题更好的解决了。。。。
写下这些做个标记吧,为以后看
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,