为什么我的VBA代码将公式应用于列下的所有行?

时间:2019-06-24 21:14:30

标签: excel vba

我只想将公式应用于满足条件的行,但是以某种方式将公式应用于所有行。

我有一个带有表格的Excel工作表。对于Q列,仅在K列的值不为0且I列的值为0时,我才想添加公式。 但是,不是将其应用于满足条件的行,而是将公式应用于列Q下的所有行。 我添加了if语句,当我在调试模式下运行程序时,它似乎可以正常工作,并检查是否正确的行进入了if条件。

奇怪的是,如果我尝试将一些随机字符串放入“ else”行中,那么它将起作用!但是在那些不满足条件的行中,我什么也不想要。

Dim lRow, i As Integer
lRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row

For i = 2 To lRow 'Starts from i=2 because i=1 is the headers

    If Range("K" & i).Value <> 0 And Range("I" & i).Value = 0 Then
        Range("Q" & i).FormulaR1C1 = "=RC[-6]"  'This is the formula.
    Else
        Range("Q" & i).Value = "" 'Doesn't work.
        Range("Q" & i).Value = "XXX" 'Works, but it inserts "XXX" to the cells. Ideally, I dont want anything, any formula in the cells.
    End If   
Next i

我希望满足条件的行应该在Q列下插入公式,但我不明白为什么我的代码不起作用。

1 个答案:

答案 0 :(得分:4)

GSerg在注释中指出,此行为是由于Excel自动填充了表格中的公式所致。

您可以在代码中插入以下内容,这将关闭自动填充功能:

Application.AutoCorrect.AutoFillFormulasInLists = False

请记住,如果正常情况下您是希望这样做(或者与他人共享此宏),请再次将其重新设置为True。