[英]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.