【问题标题】:Excel: Run A Macro On Cell ClickExcel:单击单元格时运行宏
【发布时间】:2014-10-01 22:01:06
【问题描述】:

当用户单击该行中的另一个单元格时,我正在使用以下代码将今天的日期插入单元格。

目前代码是这样设置的;如果用户单击单元格 AQ8,则将日期插入单元格 AS8。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Address = "$AQ$8" Then
       Range("AS8").Value = DATE
    End If
End Sub

但是,现在我想稍微更改此代码,以便当用户更改任一行中的任何 AQ 单元格时,随后的 AS 单元格会将日期插入该行的相应单元格中。因此,如果单击单元格 AQ9,则 AS9 显示今天的日期,当他们单击 AQ10 时,AS10 显示今天的日期,依此类推。这会写成目标行函数吗?如果是这样,我将如何写这样的东西?有人可以告诉我如何让这个做我需要的,提前谢谢

【问题讨论】:

    标签: excel cell vba


    【解决方案1】:

    如果您不想按数字引用列,即您想使用“AQ”而不是 43,那么以下应该可行:

    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = Range("AQ1").Column Then
        Range("AS" & Target.Row).Value = Date
      End If
    End Sub
    

    AQ1 中对第 1 行的引用是假的,因为代码只选择了该范围的 .Column

    我使用Worksheet_Change 是因为您说“当用户更改任何 AQ 单元格时”。如果您只希望在用户点击单元格时发生这种情况,那么您可以继续使用Worksheet_SelectionChange 事件。

    【讨论】:

    • 嗨,这似乎对我不起作用,我单击单元格 AQ 并且没有任何内容插入到 AS 单元格中
    • @markjay:正如我在回答中所说,在您的问题中,您指定希望在用户更改任何 AQ 单元格时发生这种情况.如果您希望在用户仅选择任何 AQ 单元格时发生这种情况,则需要将 Worksheet_Change 替换为 Worksheet_SelectionChange。引用您的问题:“但是,现在我想稍微更改此代码,以便当用户更改任一行中的任何 AQ 单元格时,随后的 AS 单元格将日期插入到相应的该行的单元格。”
    【解决方案2】:

    这样更新:

    If Target.Column = 43 Then
       Range("AS" & Target.Row).Value = Date
    End If
    

    AQ = 43 列中的每一行都更新为日期。

    【讨论】:

    • 谢谢,但是无论点击该行中的哪个单元格,这不会更新单元格吗?如果单击每行中的单元格 AQ,我只希望单元格 AS 插入日期
    • 对不起,我不明白。代码用今天的数据更新 AQ 行底部的 AS 列...
    猜你喜欢
    • 2019-03-01
    • 1970-01-01
    • 2016-12-03
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多