Excel的強項是數據處理,工作當中會遇到很多相同或類似的數據,需要統一提取出來,進行一個整合判斷。
通過一個循環方法可以快速實現數據的有序提取。
本節介紹一下,如何從工作表中提取出相關數據,然後賦值到一個ComboBox控件裡。
組合控件可以用下拉列表形式給出一些選項,進行操作。
如果有些選項比較多,那麼選擇起來也是一件十分痛苦的事情,于是,可以通過一些模糊查詢來進行自動篩選,然後給出一些可能需要的選項。
這麼做,也是為了最大化提高應用的操作便捷性而進行的一項數據處理。
此類應用在各大搜索引擎使用較廣泛,當你輸入一個字符的時候,相關熱詞會自動列出,就是這個意思。
下面将通過代碼來具體實現此項功能的運用。
首先,在工作表中插入一個ComboBox控件,控件名為ComboBox1。
編輯如下代碼:
Private Sub ComboBox1_Change()
Dim xStr As String
xStr = Me.ComboBox1.Value
With Me.ComboBox1
.Clear
.Value = xStr
.List = GetComList(xStr)’調用函數
End With
End Sub
此代碼為當組合框内容發生改變時的事件,也就是當輸入字符的時候會進行的一些過程。
通過list屬性來對組合控件進行賦值。
這裡調用了一個自定義函數。
函數代碼:
Public Function GetComList(xStr As String) '返回列表
Dim xLrr, xi As Integer
ReDim xLrr(0)
xStr = VBA.UCase(VBA.Trim(xStr))
If VBA.Len(xStr) = 0 Then '如果是查找空值
xLrr(0) = ""
GetComList = xLrr
Erase xLrr
Exit Function
End If
'查找列表值
Dim xArr, i As Integer, xc As Integer
xc = 3 '查找列号
xi = 0
xArr = ActiveSheet.Range("A2").CurrentRegion
For xi = LBound(xArr, 1) To UBound(xArr, 1)'判斷是否找到
If VBA.InStr(1, VBA.UCase(VBA.Trim(xArr(xi, xc))), xStr, vbTextCompare) <> 0 Then
ReDim Preserve xLrr(i)
xLrr(i) = xArr(xi, xc)
i = i 1
End If
Next xi
GetComList = xLrr
Erase xLrr
Erase xArr
End Function
通過以上代碼,就可以實現對工作表某一列數據進行檢索,然後比對ComboBox組合框中的内容,如果找到相關内容就把找到的值賦值給了組合框,可以進行選擇。
本示例是以第3列進行檢索,即xc的值。
根據一些全自動化的運行,可以實現人工複雜且重複性的一些工作,也是辦公自動化應用的最有效方法。
歡迎關注、收藏
---END---
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!