如何使用 VBA 动态自动填充目标?

Posted

技术标签:

【中文标题】如何使用 VBA 动态自动填充目标?【英文标题】:How to Dynamically AutoFill Destination using VBA? 【发布时间】:2020-06-19 12:02:12 【问题描述】:

我有两个表 Table1 和 Table2。 表 1 在 C 列中有一个手动输入,用于更新该表上的其他列。 Table2 依赖于手动输入来自动填充所有的表值。

数据示例:

如何动态更新 Table2?两个表都发生了很大的变化,以至于我拥有引用每个表的最后一行的动态范围。

我有以下代码,这只是我遇到问题的一行,因为它出错了。

Sub Auto_Fill()
 
    ' Auto_Fill Macro
      
    Range("Table1[[#Headers],[U/C LEVEL]]").End(xlDown).Select
      
    If Not IsEmpty(ActiveCell.Value) Then
      
        Range("Table3[#Headers]").End(xlDown).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.AutoFill Destination:=Range(**THIS IS THE BIT I'M HAVING TROUBLE WITH**), Type:=xlFillDefault
        Range("Table3[[#Headers],[HEIGHT DIFF.]]").End(xlDown).Select
      
    End If
      
End Sub

我不知道如何完成这个:

Selection.AutoFill Destination:=Range(THIS IS THE BIT I'M HAVING TROUBLE WITH), Type:=xlFillDefault

我想在 Table1 的 C 列中找到最后一个值,如果不为空,我想找到 Table2 的最后一行,并使用当前在 Table2 中的所有公式和值自动填充 Table2 行的一行。

我尝试了大约 20 个链接。解决方案的组合似乎都不适用于我的特殊情况。

【问题讨论】:

【参考方案1】:

假设您要自动填充 Table3,请尝试...

Dim lastListRow As ListRow

With ActiveSheet.ListObjects("Table3")
    Set lastListRow = .ListRows(.ListRows.Count)
End With

With lastListRow
    .Range.AutoFill Destination:=.Range.Resize(2), Type:=xlFillDefault
End With

【讨论】:

这非常有帮助!非常感谢你。我对此还有另一个问题...您如何使调整大小格式动态化?如果不将其设置为特定数字并且依赖于表 3,这是否可行? 太好了,很高兴能帮上忙!不过,关于您的后续问题,您能否解释一下您希望如何调整大小依赖于 Table3?

以上是关于如何使用 VBA 动态自动填充目标?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用不同的变量在 VBA 中自动填充范围

如何自动填充公式 VBA

如何使用 VBA 根据活动工作表中的单元格自动填充 Excel 表单?

Excel VBA:自动填充动态范围错误

如何让自动填充在 VBA 中工作?

VBA - 如何自动填充到底部,直到最后一个 B 单元格包含数据