林麗華
身邊有不少朋友都迷上了Office二次開發(fā),平日里沒事就喜歡用VBA編寫些應(yīng)用程序來(lái)提高自己的辦公效率,但也有半途而廢、不得要領(lǐng)的。如果能恰當(dāng)、合理地使用VBA提供的自定義控件,不僅可以讓應(yīng)用程序窗體變得更加美觀,同時(shí)也能使設(shè)計(jì)的應(yīng)用更加的個(gè)性化、更加地方便用戶的使用。
小貼士
在默認(rèn)的情況下,窗體控件工具箱中僅給出了常見的幾個(gè)控件,事實(shí)上,VBA的控件數(shù)量遠(yuǎn)不止這些,用戶可以根據(jù)需要在控件工具箱上添加一些標(biāo)準(zhǔn)控件或自定義控件,也可以隨時(shí)刪除它們。
在錄入用戶的出生日期或查詢某個(gè)日期的數(shù)據(jù)時(shí),我們經(jīng)常會(huì)用到日歷控件或者日期控件。
在Excel VBA窗體的工具箱中沒有提供日歷控件,首次使用該控件時(shí)需要將其添加到窗體工具箱中。添加的方法是:打開VBE編輯器,首先在當(dāng)前工作簿中插入一個(gè)用戶窗體。接下來(lái)單擊“工具”菜單的“附加控件”命令,打開“可用控件”對(duì)話框,在“可用控件”列表框中選擇“日歷控件 11.0”(Office版本為2003),單擊“確定”按鈕。此時(shí)在窗體工具箱中多出了一個(gè)“Calendar”(日歷) 控件。
實(shí)現(xiàn)的方法是:按“Alt+F11”組合鍵打開VBE編輯器,在當(dāng)前工作簿中插入一個(gè)用戶窗體,利用日歷控件和按鈕控件設(shè)計(jì)的用戶界面(如圖1)。雙擊窗體中的命令按鈕,在其Click事件中編寫下面的代碼:
Private Sub CommandButton1_Click()
ActiveCell.Value = Calendar1.Value
UserForm1.Hide
End Sub
雙擊當(dāng)前的工作表(如sheet1),在其SelectionChange事件中編寫下面的代碼:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'判斷用戶選中的是否為第3列
If Target.Column = 3Then
UserForm1.Show
End If
End Sub
輸入數(shù)據(jù)時(shí),當(dāng)用戶將光標(biāo)移到到第3列即出生日期所在列時(shí)自動(dòng)彈出用戶窗體,用戶選擇完日期并單擊“插入日期”按鈕后,所選日期自動(dòng)插入到當(dāng)前的單元格中,同時(shí)用戶窗體自動(dòng)隱藏。這樣,大家就可以方便地錄入日期數(shù)據(jù)了。
小貼士
與其它可編程控件一樣,日歷也有很多的屬性,如:BackColor屬性可用來(lái)設(shè)置日歷控件的背景色;Year、Month和Day屬性可用來(lái)提取所選日歷的年份、月份和日期;Value屬性用于顯示用戶在日歷控件中選定的日期值等。
DTPicker 日期控件
與日歷控件一樣,日期控件也是一個(gè)用來(lái)獲取日期的控件,功能大致相同,但操作界面與日歷控件略有區(qū)別,該控件在應(yīng)用程序的開發(fā)中比日歷控件應(yīng)用更為常見。
首次使用日期控件時(shí)也需要將其添加到窗體工具箱中去,添加的方法與日歷控件類似。日期控件的名字是“Microsoft Date and Time Picker Control 6.0 (SP4)”,其主要屬性有:Format屬性用于指定日期的顯示格式;Value屬性值與用戶選定的日期值有關(guān);Year、Month和Day屬性可用來(lái)提取所選日期值的年份、月份和日期等。
使用窗體查詢或采集數(shù)據(jù)時(shí)經(jīng)常會(huì)遇到日期輸入的問(wèn)題。此時(shí)既可以手工輸入日期數(shù)據(jù),也可以單擊列表框右側(cè)的下拉按鈕選擇日期數(shù)據(jù)(如圖2),系統(tǒng)可將用戶選擇的日期值回顯到指定的文本框或其它對(duì)象中,從而方便了日期數(shù)據(jù)的查詢或采集。
很多朋友設(shè)計(jì)的應(yīng)用程序不僅操作方便,安裝時(shí)有進(jìn)度條提示,為了美觀,他們有時(shí)還在窗體中插入變幻的Flash動(dòng)畫,這些功能到底又是如何實(shí)現(xiàn)的呢?