我希望我的Excel工作表能够跟踪我的输入。
例如,当我输入类似ID的内容并按下ENTER键时,它会在另一张表中查找该ID并找到一个NAME并替换我输入的原始单元格中的ID。
VBA可以这样做吗?
简单的例子会很好,谢谢。
更新
是的,当然,只有一些特定的单元格我会输入ID,所以整张表格都不需要跟踪。
答案 0 :(得分:2)
为您的任务使用Worksheet_Change(ByVal Target As Range)
事件处理程序(为工作表定义)。每次该工作表的单元格值发生更改(由用户或其他vba代码)时,将调用此函数。
Target
参数包含已更改的单元格范围。现在迭代该范围内的列和行,并执行您想要执行的查找/替换操作。确保事件处理程序不会调用自身的附加布尔变量。
Public NoCellUpdateHandle As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If NoCellUpdateHandle Then Exit Sub
Dim row As Integer, col as Integer, idValue as String, replaceValue as String
For Each columnObj In Target.Columns
For Each rowObj In columnObj.Rows
row = rowObj.Row
col = columnObj.Column
' You can filter for certain rows/columns
If row > 5 And row < 10 And col = 7 Then
idValue = ActiveSheet.Cells(row, col).Value
' do the lookup for the id value in the other worksheet here
' replaceValue = lookup(idValue)
' Disable the event handler and perform the replacement
NoCellUpdateHandle = True
ActiveSheet.Cells(row, col).Value = replaceValue
NoCellUpdateHandle = False
End If
Next rowObj
Next columnObj
End Sub
这应该是你所需要的一切。