讀古今文學網 > 別怕,ExcelVBA其實很簡單 > 練習小課堂 >

練習小課堂

程序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節)。