Excel VBA 工作表函数 "Filter" 获取数据
Excel VBA Worksheet Function "Filter" get data
下午好或早上好,我叫丹尼尔,我刚开始使用 Excel VBA 我想知道如何获得所有通过过滤函数基于匹配值的列的值。
到目前为止我有一个表格,请注意 label4
(Name: LBL_CODIGO_SH), label5
(Name: LBL_CODIGO_SH) 和 combobox
(名称:ComboBox3)。
我的代码在点击 “Buscar” button
时执行,代码如下:
Private Sub CommandButton4_Click()
Dim ws As Worksheet
Dim tabla As ListObject
Dim codigo As String
Set ws = Worksheets("Relacion")
Set tabla = ws.ListObjects("Tabla3")
codigo = Me.LBL_CODIGO_SH.Caption & "_" & Me.LBL_CODIGO_TH.Caption
Me.ComboBox3.List = WorksheetFunction.Filter( _
tabla.ListColumns(1).DataBodyRange, _
Evaluate(tabla.ListColumns(1).DataBodyRange.Value & "=" & codigo) _
)
End Sub
我 运行 我的程序,它给我错误 13,我在处理电子表格“过滤器”功能时遇到问题,我想我正在跳过代码。 有人能帮我吗? 我想在组合框中和数组变量中获取结果。
尝试使用 DataBodyRange 对象的地址 属性,而不是值 属性。 . .
Me.ComboBox3.List = WorksheetFunction.Filter( _
tabla.ListColumns(1).DataBodyRange, _
ws.Evaluate(tabla.ListColumns(1).DataBodyRange.Address & "=" & codigo) _
)
但是,如果您要过滤字符串,则需要将条件用引号引起来。 . .
Me.ComboBox3.List = WorksheetFunction.Filter( _
tabla.ListColumns(1).DataBodyRange, _
ws.Evaluate(tabla.ListColumns(1).DataBodyRange.Address & "=""" & codigo & """") _
)
注意Address 属性 returns 范围引用为字符串,用于构建另一个字符串以形成表达式。这个连接的字符串被传递给 Evaluate 方法,该方法计算表达式,returns WorksheetFunction.Filter
.
的第二个参数所需的布尔数组
有关地址 属性 的更多信息,请查看 here。
下午好或早上好,我叫丹尼尔,我刚开始使用 Excel VBA 我想知道如何获得所有通过过滤函数基于匹配值的列的值。
到目前为止我有一个表格,请注意 label4
(Name: LBL_CODIGO_SH), label5
(Name: LBL_CODIGO_SH) 和 combobox
(名称:ComboBox3)。
我的代码在点击 “Buscar” button
时执行,代码如下:
Private Sub CommandButton4_Click()
Dim ws As Worksheet
Dim tabla As ListObject
Dim codigo As String
Set ws = Worksheets("Relacion")
Set tabla = ws.ListObjects("Tabla3")
codigo = Me.LBL_CODIGO_SH.Caption & "_" & Me.LBL_CODIGO_TH.Caption
Me.ComboBox3.List = WorksheetFunction.Filter( _
tabla.ListColumns(1).DataBodyRange, _
Evaluate(tabla.ListColumns(1).DataBodyRange.Value & "=" & codigo) _
)
End Sub
我 运行 我的程序,它给我错误 13,我在处理电子表格“过滤器”功能时遇到问题,我想我正在跳过代码。 有人能帮我吗? 我想在组合框中和数组变量中获取结果。
尝试使用 DataBodyRange 对象的地址 属性,而不是值 属性。 . .
Me.ComboBox3.List = WorksheetFunction.Filter( _
tabla.ListColumns(1).DataBodyRange, _
ws.Evaluate(tabla.ListColumns(1).DataBodyRange.Address & "=" & codigo) _
)
但是,如果您要过滤字符串,则需要将条件用引号引起来。 . .
Me.ComboBox3.List = WorksheetFunction.Filter( _
tabla.ListColumns(1).DataBodyRange, _
ws.Evaluate(tabla.ListColumns(1).DataBodyRange.Address & "=""" & codigo & """") _
)
注意Address 属性 returns 范围引用为字符串,用于构建另一个字符串以形成表达式。这个连接的字符串被传递给 Evaluate 方法,该方法计算表达式,returns WorksheetFunction.Filter
.
有关地址 属性 的更多信息,请查看 here。