値が数式でない場合は、別のシートに値を貼り付けるためにマクロを取得(ボタンをクリック)しようとしています。私は以下のエラーは表示されませんが、機能は起動しません。ご協力いただきありがとうございます!インデックス一致に基づく値を貼り付け
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
EDIT:以下の提案で変更されましたが、それでも発火しません。 「IF-THEN」構築物は必要ないことに注意してください任意の対応する「END IF」あなたは「その後」次1行に一つだけの文を持っている場合:上記@Scott Cranerさんのコメントに加えて
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'という行を取り出してください。エラーコントロールが最後まで送信しているため、現在はすべてをスキップしています。 –
別のワークシートに同様のコードがあるので、私はこれを混乱させます。 'ないApplication.Intersect(対象、範囲( "$ B $ 1:$ C $ 1"))場合Target.Cells.Count> 1は、エラー後藤Safe_Exit Application.EnableEvents = Falseの 上のサブ を終了した場合は、何もありません レンジ( "B8")。式= salaries2 エンド のSelect Case Target.Address(0、0) ケース "B1" Target.Offset(0、1).ClearContents ケース "B8" の場合IsEmpty(Target)Then _ Target.Formula = salaries2' –