dynamic地,根据ActiveCell的值(在另一个工作表上)设置单元格的值,

我有一个两张工作表, RepAux
我想dynamic地将Aux!A2设置为表单Rep上的ActiveCell的值,但仅当ActiveCell位于该表单的D列(在Rep!D2:D5000范围内)时才有效。
最重要的是,只要工作簿处于活动状态,我就需要这种机制来运行,而不仅仅是一次性的。

例如 :当我在表单Rep我放置光标,即单元格D2上的ActiveCell 。 我期望Aux!A2被设置为Rep!D2的值。 我将光标移动到Rep!F5并且期望Aux!A2 没有任何事情发生,最后,我激活单元Rep!D7 ,再次指望Aux!A2获得ActiveCell的值。 继续,直到我closures工作簿。

我的VBA技能是不存在和谷歌search,唯一远程接近我所描述的是:

 Sub Macro1() If Not Intersect(ActiveCell, Sheets("Rep").Range("D2:D5000")) Is Nothing Then Sheets("Aux").Range("A2").Value = ActiveCell.Value End Sub 

完全失败。

把它放在“Rep”工作表的代码中。 如果单元格在列4(D)中,则随时触发该单元格上的单元格,然后将辅助单元格的值设置为匹配。

 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Column = 4 Then ThisWorkbook.Worksheets("Aux").Cells(2, 1).value = Target.Value End If End Sub 

编辑:在回应评论。

 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) End Sub 

此子例程是每个工作表上存在的事件。 任何时候select改变,它都会运行你放入的任何代码。 “ByVal目标为Excel.Range”部分是说它给你一个被选中的目标区域的副本,因为你可以select多个单元格。

 If Target.Column = 4 Then end if 

这是一个If Block。 如果条件为真,那么将执行“Then”和“End If”之间的任何代码。 条件是如果在这种情况下目标的列是4。

 ThisWorkbook.Worksheets("Aux").Cells(2, 1).value = Target.Value 

这将第2行第1列的单元格设置为匹配所选目标的值。

现在我想到了这一点,我想知道如果你select一个单元格的范围,这个代码将做什么…..