Excel VBA質問箱 IV

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

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


3366 / 13646 ツリー ←次へ | 前へ→

【62618】項目チェックするVBAを作成したいのですが みみ 09/8/12(水) 11:10 発言[未読]
【62619】Re:項目チェックするVBAを作成したいのです... Jaka 09/8/12(水) 12:57 発言[未読]
【62621】Re:項目チェックするVBAを作成したいのです... ponpon 09/8/12(水) 16:45 発言[未読]
【62701】Re:項目チェックするVBAを作成したいのです... 脱 初心者 09/8/25(火) 11:24 発言[未読]

【62618】項目チェックするVBAを作成したいのですが
発言  みみ  - 09/8/12(水) 11:10 -

引用なし
パスワード
   VBA初心者です。アドバイスお願いします。

列A10〜A1000の範囲で、新規、変更、削除という項目がプルダウンで選択できるようになっています。

例えば、
A10 に"新規"を選択した場合、L10〜CW10の値は、"●"が入力されていなければ、エラーを表示
A11 に"変更"を選択した場合、L11〜CW11の値は、"●"or"○"or"×"が入力されていなければ、エラーを表示
A12 に"削除"を選択した場合、L12〜CW12の値は、"×"が入力されていなければ、エラーを表示


このような、チェックをA10からA1000までチェックするVBAを作成したいのですが、
まったくの初心者でどのように作成すればいいのかわかりません。

アドバイスお願いいたします。

【62619】Re:項目チェックするVBAを作成したいので...
発言  Jaka  - 09/8/12(水) 12:57 -

引用なし
パスワード
   Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A10" Then
  If Target.Value = "新規" Then
   With Range("L10:CW10")
     If Application.CountIf(.Cells, "●") <> .Count Then
       MsgBox "エラー"
     End If
   End With
  End If
End If
End Sub

A11
A12
も同じようなパターンでコードを書く。
あ、A11の場合は、こんな感じになるのかな?

If Application.CountIf(.Cells, "●") + _
  Application.CountIf(.Cells, "○") + _
  Application.CountIf(.Cells, "×") <> .Count Then

End If

【62621】Re:項目チェックするVBAを作成したいので...
発言  ponpon  - 09/8/12(水) 16:45 -

引用なし
パスワード
   A1からA1000まで記述するのは大変でしょうから
Jakaさんのをそのままいただいて

Private Sub Worksheet_Change(ByVal Target As Range)

  If IsEmpty(Target.Value) Then Exit Sub
  If Target.Count > 1 Then Exit Sub
  If Application.Intersect(Target, Range("A1:A1000")) Is Nothing Then Exit Sub
   
    Select Case Target.Value
     
     Case "新規"
     
      With Range(Target.Offset(, 11), Target.Offset(, 100))
        If Application.CountIf(.Cells, "●") <> .Count Then
          MsgBox "エラー"
        End If
      End With
     
     Case "変更"
     
      With Range(Target.Offset(, 11), Target.Offset(, 100))
        If Application.CountIf(.Cells, "●") + _
          Application.CountIf(.Cells, "○") + _
          Application.CountIf(.Cells, "×") <> .Count Then
          MsgBox "エラー"
        End If
      End With

     Case "削除"
     
      With Range(Target.Offset(, 11), Target.Offset(, 100))
        If Application.CountIf(.Cells, "×") <> .Count Then
          MsgBox "エラー"
        End If
      End With
     End Select

End Sub

【62701】Re:項目チェックするVBAを作成したいので...
発言  脱 初心者  - 09/8/25(火) 11:24 -

引用なし
パスワード
   >まったくの初心者

ならば、質問をする前に 過去の投稿を検索して解決しなさい
初心者であれば、簡単な質問しかできないので
似た質問が出てくる確率が 非常に高い

tp://www.vbalab.net/bbspolicy.html

ponponさんの書かれたコードで疑問が生じたはずです。
それを投げかける行動力がない限り
進歩はありません。

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