【问题标题】:Excel VBA to call a single macro by mutliple independent worksheet changesExcel VBA 通过多个独立的工作表更改调用单个宏
【发布时间】:2016-11-03 02:59:52
【问题描述】:

我使用了以下工作表更改 VBA 代码,该代码应用于单个单元格引用,并用于根据数据验证列表中的选择调用宏。宏触发的事件适用于活动单元格的行。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(True, True) = "$H$2" Then
    Select Case Target
        Case "Yes"
            Call StandardEntry
        Case Else
            'Do nothing
    End Select
End If
End Sub

我现在希望能够应用此工作表更改事件,由同一列中的单个单元格触发,在活动单元格行中生成相同的事件,并且不影响任何其他行。相同的数据验证已应用于列中的其他单元格。

在编写适当的代码或调整上面的代码以使其适合时,我将不胜感激。

【问题讨论】:

  • StandardEntry,你没有显示,将成为这里解决方案的一部分,所以也许显示它?
  • 你的意思是你只想在 H 列中的任何单元格发生更改并且值为“是”时调用StandardEntry?如果是这样,也许将If Target.Address(True, True) = "$H$2" Then 更改为If Target.Column = 8 Then。 (但是,如果这就是您的意思,那么您问题中的“连续”一词令人困惑。)
  • @YowE3K 是的,这正是我的意思,代码更改工作完美。谢谢!我现在将编辑我的问题以消除混淆,然后将其添加为答案。再次感谢。感谢您的帮助。

标签: vba excel validation macros


【解决方案1】:

感谢@YowE3K!

正在更改

If Target.Address(True, True) = "$H$2" Then

到

If Target.Column = 8 Then

成功了,这是一个非常简单的解决方案!耶哈!

【讨论】:

  • 别忘了Target可以是多单元格范围,Target.column会返回更大范围内左上单元格的列...
  • 使用Target.Cells.Count <> 1或For Each rng In Target、Dim rng As Range和If rng.Column = 8 Then。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
相关资源
最近更新 更多