- ベストアンサー
WorkSheet_Changeを2つ反映させるには?
- WorkSheet_Changeを2つ反映させるにはどうしたらいいでしょうか?どちらか一つなら反映するのはわかりますが、どう名前を変更すればいいのかお教え願えませんでしょうか?
- 質問者はWindows 7 SP1とOffice 2010を使用しています。質問文章にはVBAコードが記載されており、祝祭日の設定とメインデータの復元を行うためにWorkSheet_Changeを2つ反映させたいとのことです。どのような名前の設定を行えば良いのか教えて欲しいとのことです。
- WorkSheet_Changeを2つ反映させるためには、各コードについてそれぞれ異なる名前を設定する必要があります。両方のコードが同じ名前になっているため、どちらか一つしか反映されない状態になっています。質問者が希望する機能を実現するためには、コードの名前を変更する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No2です。 一部コード抜けを訂正しました。 Private Sub WorkSheet_Change(ByVal Target As Range) With Target If .Count > 1 Then End Select Case .Address(0, 0) Case "C1" If .Value <> Sheets("祝祭日").Range("A1").Value Then MsgBox ("祝日の設定を反映するため年度を同じにしてください。") End If Case "G1" If .Value = 4 Or .Value = 1 Then メインデータの復元 '動かしたいマクロ名 End If End Select End With End Sub
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
まとめるとこんな感じです。 Private Sub WorkSheet_Change(ByVal Target As Range) With Target If .Count > 1 Then End Select Case .Address(0, 0) Case "C1" If .Value <> Sheets("祝祭日").Range("A1").Value Then MsgBox ("祝日の設定を反映するため年度を同じにしてください。") End If Case "G1" If .Value = 4 Or .Value = 1 Then メインデータの復元 '動かしたいマクロ名 End If End Select End Sub
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! >Dim MyRow As Long >Dim MyCol As Integer >MyRow = Target.Row >MyCol = Target.Column の部分と >If MyRow = 1 And MyCol = 7 Then を見ると、結局G1セルのコトですよね? C1・G1セルがTargetの場合にマクロを実行するようにしてみてはどうでしょうか? If Application.Intersect(Target, Range("C1,G1")) Is Nothing Then Exit Sub If Target.Address = "$C$1" Then '最初のマクロ実行 Else '2番目のマクロを実行 End If といった具合で・・・ ※ 検証していませんので外していたらごめんなさいね。m(_ _)m
お礼
やはりWorkSheet_Changeは1つだけになりますね。お陰様でできました。ありがとうございます。
お礼
御丁寧な解答ありがとうございます。事なきを得ました。やはりお教えくだされたようになりますね。 本当に有難うございました。