SSブログ

エクセル小僧:Worksheet_Changeマクロを複数のセル範囲の変化に対応させる [コンピューター]

Worksheet_Changeマクロは特殊なマクロで、ワークシートの値が変化したら起動します。

ところが、このブログで紹介したマクロでは1つの領域の変化にしか対応できませんでした。
例えば、

勤務管理表(改)
http://cheese999.blog.so-net.ne.jp/2014-08-31

では、"出社退社"のセル範囲の変化にしか対応できませんでした。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("出社退社")) Is Nothing Then
    ' 変化が無ければ抜ける
    Exit Sub
  Else
    n = 32 ' 31日の行番号
    For i = 2 To n ' 1日から31日まで
        |
    (作業時間、残業時間、深夜時間の計算)
        |
    Next i
  End If
End Sub

そこで、If文の条件をNotでくるんで逆にすることで、複数のセル範囲の変化に対応できるようにしてみました。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not (Intersect(Target, Range("出社退社")) Is Nothing) Then
    ' 「出社退社」に変化があったら、以下を実行
        |
  ElseIf Not (Intersect(Target, Range("計算方法")) Is Nothing) Then
    ' 「計算方法」に変化があったら、以下を実行
        |
  End If
End Sub

これで、「出社退社」と「計算方法」の両方のセル範囲の変化に対応できます。
ヤバイぜ!(18)  コメント(1)  トラックバック(0) 
共通テーマ:日記・雑感

ヤバイぜ! 18

コメント 1

cheese999

「ヤバイぜ!」 ありがとうございます。[__猫]
by cheese999 (2014-11-29 17:33) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。