程序1和程序2是幾乎完全相同的兩個程序,用圖4-6所示的方式將兩個程序輸入到不同的工作表對像中,然後分別在兩張工體表中選中不同的單元格,看看程序運行的效果有什麼不同?
程序1:
程序2:
參考答案
運行程序1,程序將陷入死循環,無法得到預想的結果。執行程序2後,能得到預期的結果。
設置EnableEvents屬性為False後,當選中單元格後,Excel不會再自動運行程序,即禁用了該事件。
通過對比,你知道EnableEvents屬性有什麼作用嗎?把自己的心得寫下來。
4.2.4 WorksheetFunction屬性
沒有這樣的函數,真遺憾
VBA裡有許多內置函數可供使用,但在實際應用中,並不是所有的問題都能找到合適的函數來解決。
如想統計A1:B50單元格中數值大於1000的單元格有多少個,就沒有現成的函數,需要編寫Function或Sub過程來統計。
為什麼不使用COUNTIF函數
因為VBA裡沒有COUNTIF函數。其實不只COUNTIF,SUMIF、TRANAPOSE、VLOOKUP等常用函數在VBA中也沒有。
雖然VBA裡沒有這些函數,但並不意味著它們都不能在VBA中使用。在VBA裡,可以使用Appplication對象的WorksheetFunction屬性調用部分工作表函數。
這個問題,也可以使用工作表中的COUNTIF函數來完成。
注意:如果VBA裡已經有了相同的函數,不能再引用工作表中的函數,否則會出錯。如要使用Len函數計算「ABCDE」的長度,應該寫成Len(「ABCDE」),而不能寫成Application.WorksheetFunction.Len(「ABCDE」)。
4.2.5 給Excel梳妝打扮
Excel就像一個漂亮的姑娘,你可以隨心所欲地打扮她。梳個漂亮的髮型,畫一畫眉毛,換一件漂亮的衣服……小女孩的臉上有鼻子、眼睛、嘴巴等五官,Excel的臉上也有「五官」,如圖4-8所示。
圖4-8 Excel的界面
如果你不想看到她的某個「器官」,可以把它隱藏起來,如果你覺得她的單眼皮不好看,可以動手改造一下(參閱6.5節)。