【问题标题】:AUTOFILTERS in VBAVBA 中的自动过滤器
【发布时间】:2021-03-29 08:55:29
【问题描述】:

我以为我终于完成了我的工作簿,但是当我们将其付诸实践时出现了一个问题(令我沮丧)。

简而言之; 我使用自动过滤器(不在 vba 中)菜单来过滤仓库中的物品以及它们所在的货架。 当我过滤掉除了我想添加库存的货架之外的所有内容时,我添加的值(通过 VBA 编程按钮基本上复制“添加到库存”中的所有内容(又名“C4:C1000”行并将其添加到“当前有货”行(又名“D1:d1000”))被添加到错误的行。

我的解决方案是使用自动过滤器找到正确的货架,写下添加到库存中的数量,然后按下按钮。 按钮的 VBA 代码将(在我的新计划中)然后像以前一样执行,只是这次它会首先删除过滤器,像以前一样执行,然后重新应用过滤器。

我无法 - 就我的一生 - 弄清楚如何使用 VBA 代码重新打开自动过滤器。

我在网上进行了广泛搜索,但我能找到的最接近我想要的是以下代码:

Activesheet.range("a4").autofilter

这只会阻止我的代码在中途完成执行。

请帮忙!

其中一页的完整代码如下:

Sub AddtoInnTotalandclear() '该宏用于将所有金额 plottet 移动到“INN”列中。金额移至“TOTAL AMOUNT IN STORAGE”,同时清除“INN”列

'消除屏幕闪烁(第 1 部分,共 2 部分)

Application.ScreenUpdating = False

'删除工作表上的保护(注意!您必须在代码行中拥有当前密码才能工作)

ActiveSheet.Unprotect Password:="kirk"

'复制“inn”列中的值

范围("c4:c1000").复制

'将复制的值添加到“总金额”列中已有的值中

Range("d4:d1000").PasteSpecial Operation:=xlPasteSpecialOperationAdd

'清除“客栈”列

范围("c4:c1000").ClearContents

'禁用复制范围附近的行进 atnsa

Application.CutCopyMode = False

范围("d4:d1000").选择

Selection.Locked = True

'尽管文档被锁定,但允许使用自动过滤器 '& '重新激活密码保护

使用 ActiveSheet

.Protect Password:="kirk", AllowFiltering:=True

.EnableSelection = xlNoRestrictions

结束

'确定你完成后的最终目标

Worksheets("in").Range("c4").Select

'消除屏幕闪烁(第 2 部分,共 2 部分)

Application.ScreenUpdating = True

结束子

---- 当我按下激活此 VBA 代码的按钮时,我想删除/禁用自动过滤器,然后在整个过程完成后重新激活自动过滤器...

我需要一个 EXCEL JEDI 在这里给我一些合理的代码建议。请:)

【问题讨论】:

  • 不清楚你做了什么。您是从工作表中完全删除了AutoFilter,还是只在所有过滤列上删除了ShowAllData??
  • 我进入 VBA 并将以下代码添加到 sub。 Activesheet.autofiltermode=false
  • 如果您的代码有问题,那么最好将其包含在您的问题中。
  • Tim:注意到了。我已经添加了完整的代码。

标签: excel vba autofilter


【解决方案1】:

这是一个演示示例。假设我们在 AD 列中有数据,标题在第 1 行。如果你运行:

Sub qwerty()
    Dim s As Worksheet
    Set s = ActiveSheet
    
    s.AutoFilterMode = False
    s.Range("A:D").AutoFilter
End Sub

您最终会在 AD 列上进行过滤,但对这些列中的任何一个都没有应用条件。

编辑#1:

如果您的标题行是第 3 行,并且我们正在过滤列 AD,那么:

Sub qwerty2()
    Dim s As Worksheet, N As Long
    Set s = ActiveSheet
    
    N = Cells(Rows.Count, "A").End(xlUp).Row
    s.AutoFilterMode = False
    s.Range("A3:D" & N).AutoFilter
End Sub

【讨论】:

  • 您好,加里,感谢您抽出宝贵时间。我已经在网上找到了您描述的代码,尽管以下代码有效:activesheet.autofiltermode= False 以下代码无效:activesheet.range("A3:D3") 数据从 A3、B3 等一直到 H3。但是代码不起作用。
  • @John123456789 data 是否从 A3 或列 A 标题开始于 A3???
  • 我收到的错误消息是“需要运行时错误 424 对象”
  • 我站在纠正加里..标题从 A3 开始,实际数据在 A4 和 B4 等。我也尝试像你一样简单地写它 "...Range("A:H ") 但没有骰子。
  • @John123456789 查看我的EDIT#1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
相关资源
最近更新 更多