我怎样才能使该 VBA 代码片段的产物动态更新表格?

我怎样才能使该 VBA 代码片段的产物动态更新表格?

我有一张包含所有数据的主表。我“偷”了以下代码,将第二列包含特定文本字符串的所有行复制到另一张表中。

For Each r In Src.Range("B2:B" & LastRow)
 If r.Value = "1. Early Season Visits" Then
 If CopyRange Is Nothing Then
            Set CopyRange = r.EntireRow
    Else
            Set CopyRange = Union(CopyRange, r.EntireRow)
    End If
 End If
Next r
If Not CopyRange Is Nothing Then
CopyRange.Copy Dst.Range("A1")
End If
End Sub

上面的格式有点乱,但你应该明白了。在我针对自己的具体情况进行调整后,它的效果与宣传的一样。它甚至试图延续条件格式规则 - 尽管我确实必须对所有这些规则进行细微调整才能使其正确,因为 Excel 做了一些相对引用的无用操作。

上述问题在于:

  1. 结果是静态的。如果我在主表中进行了更改,则这些更改不会在运行此代码的表中更新。必须有一种更好/不同的方法来执行此操作,以便在所有表中进行更新。
  2. 我预计,如果我通过再次运行代码手动更新,它将再次弄乱条件格式 - 这不是一个小的修复。

那么,有没有更好的方法来实现我想要实现的目标?如果有,那是什么?

答案1

您可以在每个单元格中插入公式而不是值

For Each r In Src.Range("A2:A" & LastRow)
  If r.Value <> "9999999**" Then
      Dst.Range("A" & r.row).Formula = "=Sheet6!A" & r.row
      Dst.Range("B" & r.row).Formula = "=Sheet6!B" & r.row
  ...and so on...

  End If
Next r

在回答您的问题时,我假设您知道将代码放在哪里以及问题是它的作用。

Dst.Range("A" & r.row).Formula = "=Sheet6!A" & r.row

当 r 循环遍历 Sheet6 中 A 列的所有单元格时,它将获取当前 r ( r.row) 的行并将公式插入 Sheet7 的相应单元格中。因此,如果 r 是 Sheet6 中的第一个单元格 (A1),则 Sheet7 的 A1 单元格中将插入以下公式:=Sheet6!A1并且 Sheet B1 将具有=Sheet6!B1...等等...

有时,在将公式编码到宏中之前,先尝试手动插入公式会很有用,这样可以更好地了解它们应该是什么

相关内容