如何在EXCEL中进行输入雕像跟踪

问题描述:

我想让我的Excel工作表跟踪我的输入。如何在EXCEL中进行输入雕像跟踪

例如,当我输入类似ID的东西并按下回车键时,它将在另一张表中查找该ID并找到一个名称,并替换我输入的原始单元中的ID。

VBA可以吗?

简单的例子会很好,谢谢。

更新:

当然是的,只有一些特定的细胞,我将输入ID,以便不整片需要被跟踪。

+1

你会发现很少有雕像需要跟踪... – 2012-03-13 21:19:00

为您的任务使用Worksheet_Change(ByVal Target As Range)事件处理程序(为工作表定义)。每当该工作表的单元格值发生变化时(用户或其他代码),都会调用该函数。

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 

这应该是你所需要的。

+0

1)效率明智,你应该禁用事件停止代码连续反复,而不是一个正在进行的单元格布尔检查2)通常情况下一个变化事件将被限制在一定的范围内,而不是留给整个工作表(即使您稍后过滤结果)。 – brettdj 2012-03-13 09:22:54

+0

+1这是一个很好的答案,但是这也可以通过使用List Validation更简单地实现吗? (即允许下拉列表中的'NAME' /'ID's)? – Gaffi 2012-03-13 13:04:31