こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelVBAのChangeイベントについて

いつもお世話になります。
早速ですが下記の質問についてお願い致します。

VBAのWorkSheet_Changeイベントについてですが、
所定の行の場合実行する形の物を作りたいと思います。

現在表を作成しておりますが、一人の項目として4行を必要と
しております。
その後、別の人・別の人と入力項目があります。

ここで聞きたいのが使用する行数4行の内の「1行目」に変更を
行った場合実行するコードを書きたいです。

起点となるのが10行目です。
・10行目を変更したらコードが実行される。
・11~13行目に変更を加えてもコードは実行されない。
・14行目を変更したらコードが実行される。
・15~17行目に変更を加えてもコードは実行されない。
      ・
      ・
      ・
こんな感じです。

例えるなら、10・14・18・22・26と「10+4の倍数」は
実行されないコードを書くにはどの様にしたら良いでしょうか?

ご教授願います。

投稿日時 - 2019-04-18 12:29:33

QNo.9608007

困ってます

質問者が選んだベストアンサー

10・14・18・22・26・・・・
以外は実行されない
Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Row < 10 Or .Row Mod 4 <> 2 Then Exit Sub
    MsgBox .Row & "行目、実行します。"
  End With
End Sub

投稿日時 - 2019-04-20 09:50:08

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row >= 10 And ((Target.Row - 9) Mod 4 = 1) Then
MsgBox Target.Row
'本番ではMsgBox の代わりに、処理のコードを書く
End If
End Sub
などどうですか。
ーー
テストで、1行目ー30行目までのセルに入力すると
第10,14,18,22、26,30の行で、入力すると、Msgbox表示が現れました。

投稿日時 - 2019-04-18 21:18:28

ANo.2

No1です。
起点を忘れてました。

If (Target.Row - 10) / 4 = Int((Target.Row - 10) / 4) And Target.Row >= 10 Then

投稿日時 - 2019-04-18 15:50:00

ANo.1

> 10・14・18・22・26と「10+4の倍数」は
実行されないコードを

実行されるですよね。
If (Target.Row - 10) / 4 = Int((Target.Row - 10) / 4) Then
End If

投稿日時 - 2019-04-18 14:11:24

あなたにオススメの質問