【问题标题】:Excel Autofilter on cell separated by semicolonExcel自动筛选以分号分隔的单元格
【发布时间】:2020-06-26 00:25:43
【问题描述】:

我正在尝试完全执行 posted here 的操作,但不是双击单元格。我正在尝试将事件分配给另一张纸上的按钮。不断收到“需要对象”错误并且无法弄清楚原因。

Dim Arr          'Array to SPLIT string
Dim i As Long    'Index to loop through Arr
Dim Filt         'Array to filter range
Sheet2.Cells.AutoFilter
Arr = Split(Sheet2.Range("g2"), ";")
ReDim Filt(LBound(Arr) To UBound(Arr))
    For i = LBound(Arr) To UBound(Arr)
        Filt(i) = CStr(Arr(i))
    Next i
Sheet2.Range("z5:z5000").AutoFilter 25, Filt, xlFilterValues

【问题讨论】:

  • 你的完整代码是什么? TargetWorksheet_BeforeDoubleClick 代码中指的是被双击的单元格。你想做什么?
  • @BigBen 所以我在 sheet1 上有一个按钮并尝试在单击时运行此代码。我想我的问题是我应该用什么替换“目标”以在单击按钮时使此代码工作?
  • 去掉If Not Intersect(Target, Sheet2.Range("b4:Ad5000")) Is Nothing Then,把Arr = Split(Target, ";")中的Target改成Range("A1").Value。根据需要更改范围参考。
  • 如果要分配给一个按钮,请右键单击该按钮并分配宏。
  • @BigBen 好的,我实施了您的建议,我不再收到错误消息。但是,即使我设置了范围,它也不能正确过滤。我的标题来自 B4:AD4。过滤器正确过滤掉 col25 中的数据,但过滤器隐藏了标题并从第一行开始。奇怪

标签: excel vba


【解决方案1】:

感谢@BigBen,我能够克服这个错误。如果其他人需要帮助,这里是工作代码:

 Dim Arr          'Array to SPLIT string
 Dim i As Long    'Index to loop through Arr
 Dim Filt         'Array to filter range
 Arr = Split(Sheet2.Range("g2"), ";")
 ReDim Filt(LBound(Arr) To UBound(Arr))
 For i = LBound(Arr) To UBound(Arr)
    Filt(i) = CStr(Arr(i))
 Next i
 Sheet2.Range("z4").AutoFilter 25, Filt, xlFilterValues

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多