繁体   English   中英

如何在 Excel VBA 中设置隐藏/过滤单元格的值?

[英]How to set value of hidden/filtered cells in Excel VBA?

我已经过滤掉了第 3 行和第 4 行。 我正在尝试一次设置单元格值:

range("A2:A5").value = 5

它只将值设置为 A2 和 A5。 当然我可以一一设置单元格的值,但是速度很慢。

我怎样才能快速正确地做到这一点?

有趣的事实: range("A3:A4").value = 5有效。 这是bug还是什么?

试试这个。 它不需要遍历范围内的所有单元格并填充所有过滤的单元格,隐藏和可见。

Sub test()
Range("A2:A5").FormulaArray = "5"    
End Sub

也许以取消隐藏列的方式开始宏,以再次隐藏它们来结束宏。 如果 Victor 的解决方案不起作用,请告诉我,我将为它编写代码。

编辑代码;

Sub Filter()

'Remove existing filter in colmn "2"
    ActiveSheet.ListObjects("Tabel1").Range.AutoFilter Field:=2

'Change row A to value 5
Range("A2:A6").Value = "5"

'Re-activate filter
    'Filter in column 2
    'Only show values stating "Yes"
ActiveSheet.ListObjects("Tabel1").Range.AutoFilter Field:=2, Criteria1:="yes"

End Sub

这适用于我的桌子。 该能力有三列,分别命名为“1”、“2”和“3”。 第 2 列随机包含“是”或“否”(以便于过滤证明)。

如果我筛选“是”并激活宏,则 A 列(“1”)中的所有内容现在都为“5”,包括隐藏的行。

您可以在填充范围之前检查自动过滤器,如果启用 - 禁用它

If ActiveSheet.AutoFilter.FilterMode = True Then
    ActiveSheet.ShowAllData
    Range("A2:A5").Value = 5
Else
   Range("A2:A5").Value = 5
End If

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM