VBA代码在填充列a时在列b中输入公式

时间:2015-03-11 01:12:22

标签: excel vba formulas

我有一个电子表格,每个月都有一个标签。当客户帐号输入到a栏时,我希望将vlookup公式输入到b列,直接在输入客户编号的a栏中的单元格旁边。

我已经使用输入到相邻单元格中的vlookup公式设置了工作表,但是工作表已经变得很大,以至于当用户在列a中输入数据时程序已经开始滞后。现在我试图通过设置vba代码来减小电子表格的大小,只有当列a中的单元格实际上有数据时才进入此vlookup。

我甚至尝试创建一个可以执行此操作的宏,并且它工作得很好,除了我使用此工作表的同事是非常基本的计算机用户,如果他们必须这样做会使事情复杂化#34 ;任何使公式运行的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用工作表的_Change事件处理程序根据工作表中的更改执行操作。

Sub Worksheet_Change(ByVal Target as Range)

    'Prevent infinite loops by disabling event procedures
    Application.EnableEvents = False
    'Make sure that at least one cell in selection is in column A:
    If Not Intersect(Target, Range("A:A")) Is Nothing Then Call MyMacro(Target)

    'Turn the event procedures back on
    Application.EnableEvents = True
End Sub

在任何模块中,将实际执行的子工作放入脏工作。这是我的偏好,rathr比尝试将所有填入_Change事件处理程序,我只需解析Target并将其移交给相应的子例程。

Sub MyMacro(rng as Range)

Dim cl as Range

For each cl in rng.Cells
    '## Make sure we're dealing with column A only:
    If cl.Column = 1 Then
        '## Insert a formula in the adjacent cell (column B)
        cl.Offset(0,1).Formula = "=Vlookup(..."

    End If
Next

End Sub