在ACCESS中擴展條件格式的功能
作 者:朱亦文(譯)
摘 要:在 Microsoft access 中使用用戶接口及通過編程創(chuàng)建條件格式。探討在不同環(huán)境下擴展條件格式的編程方法。
正 文:
Frank C. Rice著 朱亦文譯
Microsoft 公司
2002年3月
應(yīng)用于: Microsoft® access 2000 及以后版本
摘 要: 在 Microsoft access 中使用用戶接口及通過編程創(chuàng)建條件格式。探討在不同環(huán)境下擴展條件格式的編程方法。
簡介
自 Microsoft® access 2000 開始,能夠在 combo box 和 text box 控件上應(yīng)用條件格式。這將允許按指定的條件改變包括在這些控件中的數(shù)據(jù)的原始顯示特性,如背景色和加粗。
有兩個方法創(chuàng)建和應(yīng)用條件格式。其一,可以先選擇控件,然后在[ 格式 ]菜單上點擊[ 條件格式 ]。其二,使用 Microsoft Visual Basic® for Applications (VBA),也能創(chuàng)建使用條件格式的[ FormatCondition ]對象實例并把它們加入到[ FormatCondition ]對象集合中。
每個做了條件格式的控件最少有兩個格式--一個默認格式和一個當指定條件為 True 時的指定格式。一個控件可以有多至三個的指定格式條件。這三個條件的限制可由 VBA 代碼編程在不同的環(huán)境下確定條件的值來克服。本文第一個示例將通過用戶界面來創(chuàng)建條件格式。我們將會看到在運行時使用 VBA 代碼來創(chuàng)建條件格式改變格式條件這種更好的方法。
通過用戶界面創(chuàng)建條件格式
在<格式>菜單上的<條件格式>菜單提供一個簡單的方法創(chuàng)建和應(yīng)用多至三個條件格式。當點擊<格式>菜單上的<條件格式>,將出現(xiàn)<條件格式>對話框,如圖:
<默認格式 Default Formatting>區(qū)域顯示控件在沒有使用任何指定條件的情況下的格式。<條件 1 Condition 1>區(qū)域允許添加指定的條件格式。當要添加條件格式時,點擊[ 添加 Add ]按鈕,對話框?qū)⒆疃鄶U展至三個條件格式。
<條件格式>對話框提供六個格式控件來幫助指定每一個條件格式。從控件行的最左側(cè)開始,有加粗、斜體、下劃線、背景色以及前景色,最后一個是控件控件的啟用狀態(tài)(允許和禁止)。在最左邊的下拉列表框允許選擇<字段值為>、<表達式為>或者<字段有焦點>。也能通常操作符如:相等(=)、大于(>)、位于區(qū)間(Between)及更多。如果在一個計算字段上應(yīng)用條件格式,必須使用標準的 VBA 操作符書寫表達式。
如果格式化條件要求一個表達式,可以使用表達式生成器來幫你建立表達式。
圖 2 舉例說明在一個窗體中使用條件格式格式化與之相關(guān)的 Special Customer 文本框。
基于 Total 文本框的值作為格式化條件改變背景色。在該情形中,如果 Total 文本框的計算值介于 300 到 399 之間,文本框顯示為綠色。圖3 舉例說明在<條件格式>對話框中定義條件。
條件格式編程
當能夠非常熟練的使用<條件格式>對話框創(chuàng)建條件格式后,在這個時期,可能想使用 VBA 代碼了。通過使用代碼創(chuàng)建條件格式,能管理條件格式,用戶就會發(fā)現(xiàn)可以超過允許的三個條件格式。也可能想在多個應(yīng)用程序或多個窗體中使用條件格式。在代碼中產(chǎn)生條件,非常易于在不同的窗體中使用復(fù)制粘貼代碼應(yīng)用同樣的格式。
窗體上的每個組合框和文本框有一個包含
來看看另一個定置窗體及在其背后的代碼,是如何通過編程來創(chuàng)建條件格式及如何提供附加格式選擇。圖 4 顯示一個文本框中根據(jù)靶號確定格式的窗體。
在這個窗體中,用戶在 Target 文本框中鍵入數(shù)字,并在 Choose an option 區(qū)域選擇一選項(Option)。用戶然后在 Result 文本框中鍵入數(shù)字并點擊[Change]按鈕。對于前面三選項,Result 文本框的值與 Target 文本框的值進行比較,并根據(jù)兩個值是否是少于、等于、或大于另一個,格式化 Result 文本框的值。對于第四個選項,當點擊[Change]按鈕后,則按當前日期的星期與字符串 Sat 和 Sun 進行比較來確定 Result 文本框如何格式化。
下面是 Change 命令按鈕的 Click 事件處理程序:
Private Sub cmdChange_Click() ' 這個子程序演示使用 FormatCondition 對象來添加一個文本框的格式。 ' 設(shè)置背景色和前景色 ' 移除任何已存在的條件格式 ' 創(chuàng)建三個格式對象并將它們添加到 FormatConditions 集合中 ' 根據(jù)用戶的選項選擇,格式化 txtResult 文本框 Case 1 With Me.txtResult.FormatConditions(0) With Me.txtResult.FormatConditions(1) With Me.txtResult.FormatConditions(2) Case 2 With Me.txtResult.FormatConditions(0) With Me.txtResult.FormatConditions(1) With Me.txtResult.FormatConditions(2) Case 3 Me.txtResult.FormatConditions(0).Enabled = False Case 4 ' 這里,重新基于一比較今天日期字符串值的表達式定義格式 Set objFrc = Me.txtResult.FormatConditions. _ With Me.txtResult.FormatConditions(0) With Me.txtResult.FormatConditions(1) With Me.txtResult.FormatConditions(2) End Select End Sub |
講述代碼的細節(jié)
首先,我們定義一個 FormatCondition 對象變量 objFrc。對象將包含我們所需的格式條件。下一步,我們設(shè)置要用在 Results 文本框進行格式化的顏色。
' 設(shè)置背景色和前景色 lngRed = RGB(255, 0, 0) lngWhite = RGB(255, 255, 255) lngBlack = RGB(0, 0, 0) lngYellow = RGB(255, 255, 0) |
然后使用 FormatConditions 集合的 Delete 方法移除任何已存在的 FormatCondition 對象。
Me.txtResult.FormatConditions.Delete |
確保將要創(chuàng)建三個 FormatCondition 對象的空間,這是必須的。通過引用其索引值刪除 FormatCondition 對象如下:
Me.txtResult.FormatConditions(1).Delete |
接下來,定義指定的格式條件并使用 Add 方法將它們加入到 FormatConditions 集合。
Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _ acLessThan, Me.txtTarget.value) Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _ acEqual, Me.txtTarget.value) Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _ acGreaterThan, Me.txtTarget.value) |
表達式及控件確定何時應(yīng)用格式以及應(yīng)用哪個控件上。例如:如果 txtResult 控件字段值少于 txtTarget 控件字段值等等條件,在 txtResult 控件上應(yīng)用格式。
然后,使用 Select Case 語句序號來確定那個條件應(yīng)用那個格式。這是通過 Choose an option 區(qū)域(optgrpChoice 控件)的選項值來決定的。例如用戶選擇了選項 1 (option 1) 并且 Result 文本框的值大于 Target 文本框的值,則以下代碼將會執(zhí)行:
With Me.txtResult.FormatConditions(2) .FontBold = True .FontItalic = True .FontUnderline = False End With |
這里,第三個格式條件(索引值從 0 開始)將加粗和斜格式應(yīng)用到 Result 文本框。使用 Select Case 語句舉例說明不同的格式組合。
當用戶選擇選項 4 (Option 4) 這個特殊情形時,將移除集合中已存在的 FormatCondition 對象并動態(tài)創(chuàng)建新的 FormatCondition 對象。
Me.txtResult.FormatConditions.Delete Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _ , (Format(Now(), "ddd") = "Sat")) Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _ , (Format(Now(), "ddd") <> "Sat") And _ (Format(Now(), "ddd") <> "Sun")) Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _ , (Format(Now(), "ddd") = "Sun")) |
在這些條件定義中,使用了表達式事產(chǎn)生用三個字母表示的今天日期的星期值,并與字符串 Sat 和 Sun 進行比較來確定今天是平日還周末。使用 access 的 Format 函數(shù)可將今天的日期轉(zhuǎn)化為三個字母的字符串。是通過比較字符串不等于 Sat 或 Sun 來確定今天是否是平日。
結(jié)論
在本文中,我們探討了 Access 中的控件條件格式。我們通過用戶接口、定義和創(chuàng)建可編程條件格式來察看應(yīng)用條件格式的規(guī)則。盡管任何時候 access 限制每個控件不超過三個條件格式,但是可以通過使用 Select Case 語句和動態(tài)改變格式條件來提供附加的功能。對該技術(shù)進行舉一返三,將產(chǎn)生更富有彈性的條件格式.
(責任編輯:admin)
- ·Access窗體居中顯示技巧
- ·Access中Tab鍵的使用說明【技巧】
- ·Access粘貼對象到Tab選卡上的技巧
- ·Access在窗體上顯示當前記錄和總記錄數(shù)
- ·Access隱藏組合框的小箭頭
- ·Access窗體屬性表
- ·【技巧】Access選項組邊框變?yōu)閳A角邊框
- ·Access函數(shù)me.sfmsub.form 提示子窗體
- ·Access中使用縮放對話框顯示文本框文字
- ·access技巧-中文顯示星期幾的簡單方法
- ·Access控件是否可見,可編輯,鎖定的技巧
- ·根據(jù)查找窗體設(shè)定的條件篩選主窗體的數(shù)
- ·父子窗體的語法介紹
- ·access實現(xiàn)組合框聯(lián)動詳細教程
- ·Web Service在Access中的應(yīng)用技巧
- ·Access窗體最大化,最小化等操作