【问题标题】:Copy paste values triggered by worksheet change event is not working由工作表更改事件触发的复制粘贴值不起作用
【发布时间】:2019-10-12 11:43:46
【问题描述】:

我正在使用工作表更改事件来触发复制粘贴值。工作表更改代码在 sheet2 中

Sub worksheet_change(ByVal Target As Range)
Application.EnableEvents = True
Set Target = Range("AB2")
If Target.Value = "OK" Then
    Call myTR1
End If

请注意 AB2 单元格的值来自另一张表

复制粘贴代码在一个模块中

Sub myTR1()
Sheets("BA1").Range("AR6:AS8").Value = Sheets("BA1").Range("AL17:AM19").Value
End Sub

当目标范围更改为“OK”时,我的复制粘贴宏不会触发。我做错了什么?

【问题讨论】:

  • 你的worksheet_change 有小的w 和小的c 所以我猜代码在一个模块中而不是相关的工作表中
  • 尝试为变量使用除Target 之外的其他名称,例如TargetCell。这不是 VBA 中的“特殊”词吗?
  • @SJR 是的,工作表更改事件代码出现。复制和粘贴值代码位于模块之一中。
  • Please note AB2 cell takes it's value from another sheet 哦该死!!!!我刚刚注意到...在这种情况下Worksheet_Change 将不起作用
  • 您可能需要从Worksheet_Calculate() 的角度重新考虑这一点

标签: excel vba worksheet


【解决方案1】:

使用您的 eaxct 代码有效,尽管您的示例中没有 end sub?

编辑: 请记住,“OK”是区分大小写的,所以它必须是大写才能触发,如果您希望它在小写或大写上触发,您可以使用第二个代码。

    Sub worksheet_change(ByVal Target As Range)
    Application.EnableEvents = True
    Set Target = Range("AB2")
    If Target.Value = "OK" Then
        Call myTR1
    End If
    End Sub

    Sub worksheet_change(ByVal Target As Range)
    Application.EnableEvents = True
    Set Target = Range("AB2")
    If Target.Value = "OK" Or Target.Value = "ok" Then
        Call myTR1
    End If
    End Sub

【讨论】:

  • 我正在使用 End Ifs 跟踪多个单元格 AB2、AB3...AB200。最后我有 End Sub。我更改的值“OK”是大写的,但是单元格 AB2 - AB200 链接到其他工作表。也许这就是为什么更改事件没有触发宏,严格来说价值没有改变,只是公式被更新了?有什么解决方法吗?谢谢。
  • 我不太确定,因为作为测试,我只是将 AB2 的值设置为“=AB5”,然后将 AB5 的值更改为“OK”,这反过来又更新了 AB2 单元格,然后它触发工作表更改事件
  • 感谢您的检查。它在其他专栏中适用于我,而不适用于 AB。我刚刚将跟踪器列更改为 AC,工作表更改事件现在正在触发宏。我不确定为什么 AB 列在第一个实例中不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-04
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多