Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


117 / 74194 ←次へ | 前へ→

【79719】Re:エラーメッセージ
回答  りった  - 18/3/15(木) 12:33 -

引用なし
パスワード
   Targetが複数セルのことがあるので、for eachでループしてみるのは如何でしょうか?
Private Sub Worksheet_Change(ByVal Target As Range)
  ' Anに値が入力されていないとBn,Cn,Dn,En,Fnは、入力できずに
  '「大項目を入力して下さい」とエラーメッセージがでるようにする
  ' n:1〜41
  Dim r As Range
  For Each r In Target
    If Not Intersect(r, Sheet1.Range("B1:F41")) Is Nothing Then
      If Sheet1.Range("A" & r.Row) = "" Then
        MsgBox "大項目を入力して下さい"
      End If
    End If
  Next
End Sub

複数セルを一気に更新して大量にエラーが出るのが嫌であれば、ループから抜けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
  ' Anに値が入力されていないとBn,Cn,Dn,En,Fnは、入力できずに
  '「大項目を入力して下さい」とエラーメッセージがでるようにする
  ' n:1〜41
  Dim r As Range
  For Each r In Target
    If Not Intersect(r, Sheet1.Range("B1:F41")) Is Nothing Then
      If Sheet1.Range("A" & r.Row) = "" Then
        MsgBox "大項目を入力して下さい"
        Exit For ' ★
      End If
    End If
  Next
End Sub


無関係な広範囲のセルを更新時に大量にループするのが嫌であれば下記で
Private Sub Worksheet_Change(ByVal Target As Range)
  ' Anに値が入力されていないとBn,Cn,Dn,En,Fnは、入力できずに
  '「大項目を入力して下さい」とエラーメッセージがでるようにする
  ' n:1〜41
  Dim r As Range
  If Not Intersect(Target, Sheet1.Range("B1:F41")) Is Nothing Then ' ★
    For Each r In Target
      If Not Intersect(r, Sheet1.Range("B1:F41")) Is Nothing Then
        If Sheet1.Range("A" & r.Row) = "" Then
          MsgBox "大項目を入力して下さい"
        End If
      End If
    Next
  End If
End Sub

78 hits

【79708】エラーメッセージ V 18/3/14(水) 10:38 質問[未読]
【79711】Re:エラーメッセージ りった 18/3/14(水) 12:43 回答[未読]
【79713】Re:エラーメッセージ V 18/3/14(水) 14:19 質問[未読]
【79719】Re:エラーメッセージ りった 18/3/15(木) 12:33 回答[未読]
【79720】Re:エラーメッセージ V 18/3/15(木) 13:13 質問[未読]
【79724】Re:エラーメッセージ りった 18/3/22(木) 12:49 回答[未読]

117 / 74194 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free