這是我第一次參加這個論壇。我是一個'新手'在Excel VBA中,並會很感激,如果任何人都可以提供幫助。Excel中的複選框搜索VBA
我試圖建立一個複選框搜索頁面,其中:
- 用戶可以使用複選框選擇最多4項搜索(在「搜索」工作表)
- 在數據表時,數據被記錄(由列)如下:
碼本項材料1的百分比1種材料2的百分比2物質3 3百分率材料4的百分比4
- 一個項目,例如「聚酯」將出現在欄目材料1',2等等中,具體取決於記錄
- 如果檢查多個關鍵字,則搜索應基於在搜索頁面中檢查的複選框
- 。滌綸,羊毛,棉花,那麼只應該顯示所有3個關鍵字的行
我已經在網上搜索了很多帖子,如果找到關鍵字,他們會刪除行。有什麼辦法可以扭轉邏輯並適用於這種特殊情況嗎?
被卡住了很多天...感激,如果有人可以幫助!
更新1:我設法找到了一些在互聯網上刪除行,如果某些關鍵字被發現 - 但是 - 我想做相反的事情(這會讓我剩下的正確的,而不是...)
如下代碼 - 這可能改變?:
Sub Example1()
Dim varList As Variant
Dim lngarrCounter As Long
Dim rngFound As Range, rngToDelete As Range
Dim strFirstAddress As String
Application.ScreenUpdating = False
varList = VBA.Array("Here", "There", "Everywhere")
For lngarrCounter = LBound(varList) To UBound(varList)
With Sheet1.UsedRange
Set rngFound = .Find(_
What:=varList(lngarrCounter), _
Lookat:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=True)
If Not rngFound Is Nothing Then
strFirstAddress = rngFound.Address
If rngToDelete Is Nothing Then
Set rngToDelete = rngFound
Else
If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
Set rngToDelete = Application.Union(rngToDelete, rngFound)
End If
End If
Set rngFound = .FindNext(After:=rngFound)
Do Until rngFound.Address = strFirstAddress
If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
Set rngToDelete = Application.Union(rngToDelete, rngFound)
End If
Set rngFound = .FindNext(After:=rngFound)
Loop
End If
End With
Next lngarrCounter
If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete
Application.ScreenUpdating = True
[* autofilter以數組爲標準*](http://www.ozgrid.com/VBA/autofilter-vba-criteria.htm) – 2013-12-13 10:30:57
謝謝!但是,如果複選框被選中,你如何添加自動過濾器?爲了添加更多的信息,我有'搜索'工作表 - 用戶可以檢查這些框並鏈接到單元格列,如果他們被檢查,則生成true。我想在'Search Res'表格中使用這些選中的值作爲過濾器過程。 – user3098861
先創建一個數組。在複選框上循環,如果他們被檢查,然後將他們的值(文本)添加到數組。 – 2013-12-16 10:53:49