vba代碼判斷某列有沒有篩選過?Excel VBA提供了許多控件,同時也可以自定義控件,控件中有些功能已經可以完成大部分操作,本文介紹一個十分實用的功能屬性,我來為大家講解一下關于vba代碼判斷某列有沒有篩選過?跟着小編一起來看一看吧!
Excel VBA提供了許多控件,同時也可以自定義控件,控件中有些功能已經可以完成大部分操作,本文介紹一個十分實用的功能屬性。
如何,在下拉列表中自動篩選出想要的選項?
下拉列表框是一個應用很普遍的控件,任意語言都會用到這樣的模式。
在實際應用場景當中,會遇到相似或部分相同内容的選項,在選擇這些項目的時候,如果自動把需要的内容提取出來那麼就會提高操作效率。
依據實際要求,VBA給出的ComboBox控件和ListBox控件一個屬性MatchEntry可以實現這樣的功能。
語法如下圖所示:
語法:
ComboBoxObject.MatchEntry [= fmMatchEntry ]
其中ComboBoxObject是一個對象,是ComboBox或者ListBox對象。
fmMatchEntry 的設置為: | ||
常量 |
值 |
說明 |
fmMatchEntryFirstLetter |
0 |
基本匹配。 控件搜索輸入的字符開頭的下一個項。 重複鍵入同一字母将循環顯示該字母開頭的所有項。 |
FmMatchEntryComplete |
1 |
擴展匹配。 在鍵入每個字符時,控件将搜索與輸入的所有字符匹配的項(默認)。 |
FmMatchEntryNone |
2 |
無匹配。 |
上述值可以區别,如何對下拉列表值進行搜索。
當值為0,則重複搜索相同字母,也就是把開頭為第一個輸入值的項目循環搜索出來。
當值為1,可以輸入多個字母以匹配相應的項目。
值為2,不做匹配搜索。
重點:
其搜索結果有一個默認事件。
當搜索到相應匹配結果的時候,會觸發控件的Click事件。
這一點才是其根本應用的關鍵,也就是說當我樣輸入一個字符,匹配到相應列表項之後,自動把列表值設定的匹配項,然後觸發Click事件。
當然了,Click事件可以編寫我們想要處理的過程或函數。
這就是MatchEntry屬性的功能所在。
注意:
還有一些相應的屬性需要配合設置,不然MatchEntry還是不能夠正确的達到我們的目的。
控件将搜索與由用戶鍵入的項匹配的項的 TextColumn 所标識的列。 在找到一個匹配項時,将選擇包含該匹配項的行,顯示列的内容,并且其 BoundColumn 屬性的内容将變為控件的值。 如果匹配是明确的,則查找匹配将啟動 Click 事件。
要設置TextColumn屬性,表示在列表控件的哪一列進行匹配搜索。
BoundColumn屬性同樣也要設置正确,表示匹配之後顯示到控件裡的内容是列表的哪一列。
這兩個屬性設置錯誤,那麼将不會看到想要的結果。
代碼
Private Sub UserForm_Activate()
With Me.ComboBox1
.List = Array("12345", "this is a list", "昨夜西風雕碧樹", "126", "288", "168")
.MatchEntry = fmMatchEntryComplete'擴展匹配
.TextColumn = 1
.BoundColumn = 1
End With
With Me.ComboBox2
.List = Me.ComboBox1.List
.MatchEntry = fmMatchEntryFirstLetter'基本匹配
.TextColumn = 1
.BoundColumn = 1
End With
End Sub
MatchEntry屬性本身有默認屬性,所以初學者不會考慮太多,對于要掌握更深層次的内容,學會精确編寫各類應用功能的需求,還是要從各控件的細節進行研究為好。
歡迎關注、收藏
---END---
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!