【问题标题】:add a formula when a row is added vba添加行时添加公式vba
【发布时间】:2017-02-27 16:19:46
【问题描述】:

添加行时,我想在 L 到 R 列中添加以下公式。到目前为止,这就是我所拥有的。

但我似乎无法弄清楚如何确保此宏仅在添加一行时出现,并且我不希望它运行到最后一行,而仅适用于添加的最新行。 谁能帮我这个。我还是 VBA 的新手,虽然我环顾四周如何做到这一点,但我无法捕获有助于我仅在添加的行上添加此公式的信息。 谢谢你的帮助


Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Long

For i = 2 To LastRow

        Range("L" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
        Range("M" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
        Range("N" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
        Range("O" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
        Range("P" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
        Range("Q" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
        Range("R" & i).Value = "=NETWORKDAYS(RC[-8],RC[-7],Holidays)"
Next      
End Sub

【问题讨论】:

    标签: vba excel-formula add rows


    【解决方案1】:

    我想到了几种方法(可能还有其他方法)。


    测试Target 范围以查看其Address 是否为完整行:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim test As Range
        Set test = Target.EntireRow
        If test.Address = Target.Address Then
            Debug.Print "Entire row changed"
        End If
    End Sub
    

    测试Target范围的列数,看它是否包含每一列:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Columns.Count = Me.Columns.Count Then
            Debug.Print "Entire row changed"
        End If
    End Sub
    

    手动跟踪最后一行并与缓存值进行比较:

    Private previousBottom As Long   '<--Worksheet level variable.
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim bottom As Long
        bottom = Me.Cells(Me.Rows.Count, 1).End(xlUp).Row
        If bottom <> previousBottom Then
            previousBottom = bottom
            Debug.Print "Row inserted or deleted."
        End If
    End Sub
    

    【讨论】:

    • 谢谢,但我尝试了第一个和最后一个,然后我添加了我的代码,但没有任何反应。我错过了什么吗?请注意,我在代码末尾添加了 Next。
    • @ValS - 更改整行时要运行的代码将进入 If 块内 - 只需替换以 Debug.Print 开头的行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2017-08-16
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多