2012-03-13 40 views
-2

我想讓我的Excel工作表跟蹤我的輸入。如何在EXCEL中進行輸入雕像跟蹤

例如,當我輸入類似ID的東西並按下回車鍵時,它將在另一張表中查找該ID並找到一個名稱,並替換我輸入的原始單元中的ID。

VBA可以嗎?

簡單的例子會很好,謝謝。

更新:

當然是的,只有一些特定的細胞,我將輸入ID,以便不整片需要被跟蹤。

+1

你會發現很少有雕像需要跟蹤... – 2012-03-13 21:19:00

回答

2

爲您的任務使用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