dynamic地,根据ActiveCell的值(在另一个工作表上)设置单元格的值,
我有一个两张工作表, Rep
和Aux
。
我想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一个单元格的范围,这个代码将做什么…..