我有一个电子表格,每个月都有一个标签。当客户帐号输入到a栏时,我希望将vlookup公式输入到b列,直接在输入客户编号的a栏中的单元格旁边。
我已经使用输入到相邻单元格中的vlookup公式设置了工作表,但是工作表已经变得很大,以至于当用户在列a中输入数据时程序已经开始滞后。现在我试图通过设置vba代码来减小电子表格的大小,只有当列a中的单元格实际上有数据时才进入此vlookup。
我甚至尝试创建一个可以执行此操作的宏,并且它工作得很好,除了我使用此工作表的同事是非常基本的计算机用户,如果他们必须这样做会使事情复杂化#34 ;任何使公式运行的东西。
答案 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