与Excel事件的VBA查找

我有Sheet1 column D的位置列表和Sheet1 column E中的原始值列表。 在一些地方之间有空白的行,有些地方是重复的。

我在Sheet2 Column F (在数据中有1个空白行)中有一个精简的位置列表,并且在Sheet2 column G我可以为每个位置添加新的校正值。

该计划是有一个脚本,将运行每次我把一个新的值在Sheet2 column G 这个我希望可以用excel vba事件来实现。 假设我更新G5 ,脚本将在Sheet1 D:DfindSheet2 F5 ,然后用Sheet2 G5的新值replaceSheet1 E:E的对应值:

这里是我的一些代码的尝试,但我仍然不确定1)如何使这个工作和2)如何让它工作,每当我更新Sheet2 G:G ? 任何帮助将非常感激。

 Sub CorrectingValues() Dim i As Long Dim lstrw As Long Dim newval As Range Sheets("Sheet1").activate lstrw = Cells(Rows.Count, "D").End(xlUp).Row For i = lstrw to 1 Step -1 If Sheet("2").Cells(i, "G").value <>"" Then newval = .Find(Sheets("Sheet2").cells(i, "F") _ After:=Sheets("Sheet1").Range("D1") , LookIn:=xlValues) Cells(newval, "E").Value = Sheets("2").cells(i,"G") End If Next i End Sub 

将下面的代码放在Sheet2中

 Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("G:G") If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then enteredvalue = Target.Value enteredvaluefind = Cells(Target.Row, Target.Column - 1) targetfindrow = Worksheets("Sheet1").Range("D:D").Find(enteredvaluefind).Row targetfindcolumn = Worksheets("Sheet1").Range("D:D").Find(enteredvaluefind).Column Worksheets("Sheet1").Cells(targetfindrow, targetfindcolumn + 1) = enteredvalue End If End Sub 

“Excel事件”

G列中的内容发生变化时要做某些事情:在要捕获更改的Worksheet VBA中完成:

a)声明一个全局variables来重用更改的内容,以防万一:

 Dim RangeSupp As Range 

b)Excel中某些内容发生变化时的VBA事件

 Private Sub Worksheet_Change(ByVal Target As Range) Set RangeSupp = Target ' check what changed If InStr(Target.Address, "$H") = 1 Then ' call the function you want GoToAnotherMacro RangeSupp End If End Sub 

c)我要求testing的函数的例子

 Sub GoToAnotherMacro(Target As Range) MsgBox Target.Address End Sub