我有下面的代码,有时我会动态提到多个区域的范围或在过滤模式下选择数据。
当我再次将更新后的值放入同一范围内时,就会出现问题。
它仅更新所有范围单元格中的第一行值或执行错误。
Dim Rng as Range, RngVar
Set Rng = Range("A5:BG20001,A20005:BG30000")
RngVar = Rng.Value
For i = LBound(RngVar) to Ubound(RngVar)
'Some update on each RngVar row
Next i
Rng.Value = RngVar
如何在不循环每一行或高效的情况下完成它?
最佳答案
首先,RngVar
并不是你想象的那样。它仅包含与第一个区域 A5:BG20001
相关的 .Value
。您无法像您尝试的那样通过单个步骤将多区域 Range 的 .Value
读取到数组中。
循环.Areas
并单独处理每个:
Dim Rng as Range, RngVar, Area As Range
Set Rng = Range("A5:BG20001,A20005:BG30000")
For Each Area In Rng.Areas
RngVar = Area.Value
For i = LBound(RngVar, 1) To UBound(RngVar, 1)
'Some update on each RngVar row
Next
Area.Value = RngVar
Next
关于excel - 如何在 VBA 中将变量值置于隐藏行范围内或过滤模式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77419006/