excel - 如何在 VBA 中将变量值置于隐藏行范围内或过滤模式中

标签 excel vba

我有下面的代码,有时我会动态提到多个区域的范围或在过滤模式下选择数据。

当我再次将更新后的值放入同一范围内时,就会出现问题。

它仅更新所有范围单元格中的第一行值或执行错误。

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/

相关文章:

java - Apache POI HSSF/XSSF - 评估不存在于单元格中的公式

vba - 使用无模式表单和用户定义的类处理自定义事件

c# - 使用 ClosedXML 创建下拉列表

excel - 如何统计文件夹中的文件数

vba - 使用命名范围填充列表框

vba - 如何使用 XMLHTTP 从网页获取信息

vba - 过滤时数据不存在时的错误消息

c# - 使用 VSTO 检测 Word 2007 文档中的当前签名

vba - 是否有像 INDIRECT 这样的 Excel 公式可以从另一个工作簿中获取依赖下拉列表?

Excel VBA 创建嵌入式 WebBrowser 并使用它