由工作表更改事件触发的复制粘贴值不起作用
Posted
技术标签:
【中文标题】由工作表更改事件触发的复制粘贴值不起作用【英文标题】: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()
的角度重新考虑这一点
【参考方案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 列在第一个实例中不起作用。以上是关于由工作表更改事件触发的复制粘贴值不起作用的主要内容,如果未能解决你的问题,请参考以下文章