Excel VBA是否可以将字典/集合传递给自动筛选?
其想法是创建一个变量,保存以前使用宏时对其所做的更改。我有一个userform,它从一个范围中提取值,并在列表框中填充唯一的值。然后,我希望能够将选定的值添加到我的字典/集合中并保存更改。完成所有必要的更改后,宏应使用dictionary变量作为自动筛选的条件 我的问题有两个,我应该用什么课程来完成这个任务?如何使用此变量自动筛选我的工作表?用户表单代码如下: 第一位代码用于“添加命令”按钮。它应该获取列表框中的选定值,并将它们添加到名为Market的字典中。之后的代码从最近打开的excel工作簿中提取值,并在列表框中显示唯一的值。Listbox2保存宏以前使用过的所有值。我想在userform中添加一个Delete按钮,以便在必要时整理列表。下面的两个公共变量实际上位于主宏模块上,这将允许我在userform停止运行后将值存储在字典中Excel VBA是否可以将字典/集合传递给自动筛选?,excel,vba,dictionary,collections,autofilter,Excel,Vba,Dictionary,Collections,Autofilter,其想法是创建一个变量,保存以前使用宏时对其所做的更改。我有一个userform,它从一个范围中提取值,并在列表框中填充唯一的值。然后,我希望能够将选定的值添加到我的字典/集合中并保存更改。完成所有必要的更改后,宏应使用dictionary变量作为自动筛选的条件 我的问题有两个,我应该用什么课程来完成这个任务?如何使用此变量自动筛选我的工作表?用户表单代码如下: 第一位代码用于“添加命令”按钮。它应该获取列表框中的选定值,并将它们添加到名为Market的字典中。之后的代码从最近打开的excel工作
Private Sub CommandButton1_Click()
Dim i As Long
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Market.Add ListBox1.List(i)
Set Market = New Collection
End If
Next
End Sub
Private Sub UserForm_Initialize()
Dim myList As Collection
Dim myRange As Range
Dim ws As Worksheet
Dim myVal As Variant
Dim Col As Integer
Set ws = ActiveWorkbook.Sheets("Daily Unconfirmed")
Col = WorksheetFunction.Match("Marketer", ws.Range("3:3"), 0)
Set myRange = ws.Range(Cells(4, Col), Cells(4, Col).End(xlDown))
Set myList = New Collection
On Error Resume Next
For Each mycell In myRange.Cells
myList.Add mycell.Value, CStr(mycell.Value)
Next mycell
On Error GoTo 0
For Each myVal In myList
Me.ListBox1.AddItem myVal
Next myVal
作为变体的公共项目
公开市场作为收藏品
Market.Add "Al D"
Market.Add "B Collins"
Market.Add "B G"
Market.Add "C Huter"
For Each item In Market
Me.ListBox2.AddItem item
Next item
End Sub
由于AutoFilter是从阵列运行的,因此我将动态构建阵列并在过滤子系统中使用它:
Dim ary()
Sub MAIN()
Call BuildDynamicArray
Call FilterMyData
End Sub
Sub BuildDynamicArray()
Dim inString As String
i = 1
While 1 = 1
x = Application.InputBox(Prompt:="Enter a value", Type:=2)
If x = False Then GoTo out
ReDim Preserve ary(1 To i)
ary(i) = x
i = i + 1
Wend
out:
End Sub
Sub FilterMyData()
ActiveSheet.Range("$A$1:$A$10").AutoFilter Field:=1, Criteria1:=ary, Operator:=xlFilterValues
End Sub
您可以传递字典的.Keys或.value,也可以传递向量数组,但我认为您不能直接将集合传递给.List属性,您必须为每次迭代执行以下操作。