ここから本文です

解決済みのQ&A

Excelでのバーコード入力を行った後、照合結果のマクロについて質問します。

ID非公開さん

Excelでのバーコード入力を行った後、照合結果のマクロについて質問します。

添付ファイルのExcelでセルA1、B1、C1、D1、E1とバーコードで入力し、F1(結果)でA1からE1の行のデータが全て同じならば、F1に「OK」と表示され、尚且つA1からF1の行が青色で塗りつぶされ、A2のセルに自動的に移動し、その作業を繰り返します。
また、A3、A4の行のように違うデータがあった場合、結果に「NG」と表示され、その行が赤色に塗りつぶされるようにしたいです。



Excelマクロが初心者の為、宜しくお願いします。

補足
早速の回答ありがとうございます。ryouko47さんので、うまく動作しましたが、はじめからデータを1つ入れたらすぐに赤で塗りつぶしになりました。希望としてはA~Eまで入力したあとに結果の判定同時に塗りつぶしになればよいのですが、再度お願いできないでしょうか?

投稿画像

  • アバター
  • 質問日時:
    2013/1/16 12:14:44
  • 解決日時:
    2013/1/21 12:28:21
  • 閲覧数:
    1,712
    回答数:
    1

ベストアンサーに選ばれた回答

ryouko47さん

CountBlankで5列1行が空白セルを1つも含まない場合に処理を行えるようにしました。

あるセル範囲の値がすべて同じであるかを確認する場合、Rangeオブジェクトの「Text」プロパティを使用すると便利です。このプロパティは通常、セルに表示されている文字列を取得するためのものですが、対象セル範囲のTextの値がすべて同じになっていない場合、「Null」を返却する性質を持っていますので、これを活用します。

■使用方法
該当シートのシートモジュールに下記サンプルコードを組み込んで下さい。

■サンプルコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim m_Target As Range

Set m_Target = Intersect(Target.EntireRow, Me.Range("A:E"))
If Not m_Target Is Nothing Then
If WorksheetFunction.CountBlank(m_Target) = 0 Then
Application.EnableEvents = False
If IsNull(m_Target.Text) Then
m_Target.Cells(1, 6).Value = "NG"
m_Target.Resize(, 6).Interior.ColorIndex = 3
Else
m_Target.Cells(1, 6).Value = "OK"
m_Target.Resize(, 6).Interior.ColorIndex = 34
m_Target.Cells(2, 1).Activate
End If
Application.EnableEvents = True
End If
End If
End Sub

  • 違反報告
  • 編集日時:2013/1/16 15:58:22
  • 回答日時:2013/1/16 13:36:19

質問した人からのお礼

  • 成功完璧です。ありがとうございました。
  • コメント日時:2013/1/21 12:28:21

アバター

Q&Aをキーワードで検索:

総合Q&Aランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する