我试图让一个宏(按钮单击)将值粘贴到另一个表中,如果该值不是公式。我没有得到任何与下面的错误,但功能不会触发。预先感谢您的帮助!基于索引匹配的粘贴值
Sub Update_Numbers(ByVal Target As Range)
' Update_Numbers Macro
'
' Keyboard Shortcut: Ctrl+j
On Error GoTo Safe_Exit
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case Sheets("Wage Run").Range("B7")
If Target.HasFormula = False Then _
Sheets("wage run").Range("B7").Copy
Sheets("With Changes").Select
Range(Application.WorksheetFunction.Index(Sheets("With Changes").Range("E2:AB138"), Application.WorksheetFunction.Match(Sheets("Wage Run").Range("D1"), Sheets("With Changes").Range("A2:A138"), 0), 1)).Select
ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Select
Safe_Exit:
Application.EnableEvents = True
End Sub
编辑:改变与下面的建议,但它仍然不会触发。
Sub Update_Numbers(ByVal Target As Range)
With Sheets("wage run")
' Update_Numbers Macro
'
' Keyboard Shortcut: Ctrl+j
On Error GoTo Safe_Exit
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "B7"
If Target.HasFormula = False Then
Sheets("wage run").Range("B7").Copy
Sheets("With Changes").Select
Range(Application.WorksheetFunction.Index(Sheets("With Changes").Range("E2:AB138"), Application.WorksheetFunction.Match(Sheets("Wage Run").Range("D1"), Sheets("With Changes").Range("A2:A138"), 0), 1)).Select
ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End Select
Safe_Exit:
Application.EnableEvents = True
End Sub
把你的错误检查出来,你会明白为什么,目标是什么。 –
除非您通过另一个调用此函数的子函数向子函数提供范围,否则它将不执行任何操作,因为除非它是允许的其中一个工作表事件,否则Target不会自动设置,只需将其放在括号中即可实现它。它在'Select Case Target.Address(0,0)'处导致错误,因为Target没有任何内容,没有地址。取出'On Error GoTo Safe_Exit Application.EnableEvents = False'。现在你正在跳过一切,因为错误控制将它发送到最后。 –
我很困惑,因为我在另一个工作表中有类似的代码。如果Target.Cells.Count> 1然后退出Sub On Error转到Safe_Exit Application.EnableEvents = False If Application.Intersect(Target,Range(“$ B $ 1:$ C $ 1”))Nothing Nothing Then 范围( “B8”)。式= salaries2 结束如果 选择事例Target.Address(0,0) 案例 “B1” Target.Offset(0,1).ClearContents 案 “B8” 如果IsEmpty(Target)然后_ Target.Formula = salaries2' –