プロが教える店舗&オフィスのセキュリティ対策術

エクセルとバーコードリーダーによって、在庫管理をしようと考えています。バーコードリーダーには、スキャンによって値が入力されるとPC上でtabキーを押す、という機能があるので、エクセルにリーダーで読み込んだ値が入力されたあと、次のセルに移動することができます。ですので、商品のバーコードを次々に読んでいって、エクセルのシート上にデータを蓄積させていきます。
この蓄積される行をsheet1につくった一覧表からcountif関数でチェック(shhet2にバーコード数値=商品名のリストがある)し、どの商品が何個あるかを数えていくようにしています。
=COUNTIF(10:10,Sheet2!D7)・・・(リーダーから入力される値が入る行:元リスト)

お尋ねしたいのは、バーコードから入力される値が、元リストにあるかどうかを照合し、リストに無い値が読み込まれた場合にエクセル上で警告音を鳴らすようにできないのか?という事です。
小型のノートPCでこのエクセルを動かし、肩掛けかばんに入れてバーコードリーダーだけ手元に。という事を考えているので、警告ダイアログ等は出さす、音だけで知らせるようにしたいのです。

以上、よろしくお願いします。

「エクセルによる照合と警告音」の質問画像

A 回答 (3件)

>回答をいただいて、すぐに試してみたのですが、リストにある値でもBeep音が鳴ります…


う~ん、何故でしょうね?
ちなみに新しいブックで
Sheet2
A B
ABC
DEF
GHI
とでも準備して
Sheet1の名前のタブ、コードの表示で
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Set c = Sheets("Sheet2").Range("A1:A8").Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole)
If c Is Nothing Then
MsgBox Target.Value & "はありません"
Else
MsgBox Target.Value & "は" & c.Address
End If
End Sub

を貼り付けて、適当なセルに ABC と入れた場合、ZZZと入れた場合で実験してみてください。
Sheets("Sheet2").Range("A1:A8").Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole)
のTerget.ValueはSheet1の変更があったセルの値(本番では、バーコードで入力した値)
Sheet2のA1~A8を検索して
If c Is Nothing Then は もし見つからなければ 
という分岐です。
見つかったら音を出すということなので、VBAの力を借りないと出来ません。
エクセルVBAで検索すると勉強のためのサイトがいくつもあります。
一度、根気強く勉強してもらうと、将来にも役にたつと思います。
    • good
    • 0

例えばSheet1の名前のタブを右クリック、コードの表示


VBエディターが起動したら
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Row = 10 Then
Set c = Sheets("Sheet2").Range("B2:H8").Find(What:=Target.Value, LookIn:=xlValues, _
LookAt:=xlWhole)
If c Is Nothing Then Beep
End If
End Sub
を貼り付けして閉じてみてください。
VBAの動作を説明すると
Sheet1の10行目が変更されたら
Sheet2のB2:H8の範囲を検索、変更された値が検索値
もし、検索して何も見つからなければ Beep(音を出す)
といったような流れです。
後は、ご自身のシートにあわせて編集してみてください。
    • good
    • 0
この回答へのお礼

お返事が遅れて申し訳ありませんでした。
回答をいただいて、すぐに試してみたのですが、リストにある値でもBeep音が鳴ります…
でも、値は正しいのでcountifを入れている方のリストは数字がカウントされていきます。
VBAはさっぱりわからなかったので、いろいろ調べてみましたが、いまだ解決できません。
あまり長い間返答なしも失礼かと思いましたので、いったんお礼を申し上げようとコメントいたしました。
具体的な例もあげずに質問したのに、ご回答いただきありがとうございました。

お礼日時:2010/04/25 17:18

今一、良くわからないのですが


>バーコードから入力される値が→Sheet2のB2~F7の入力される値?
>元リストにあるかどうかを照合し→Sheet1のどこにあるのでしょうか?
>リストに無い値が読み込まれた場合にエクセル上で警告音を鳴らす
→VBAの力を借りて出来ます。
添付画像のどこにバーコードの値が入って、検索する範囲がどこなの補足してください。

この回答への補足

言葉足らずというか説明が変で申し訳ありませんでした・・・
・バーコードから入力される値
絵が小さくて見えにくいですが、Sheet1のA10から右に続いています。バーコードのトリガーを押すたびに、バーコードを読む→エクセルのA10に値が入る→自動でB10がアクティブに→次のバーコードを読む・・・という動作をしています。

・元リストにあるかどうかを照合
Sheet2が元リストです。縦が商品の種類・横が商品のサイズです。

たとえば、バーコードをスキャンし、バーコードの数値がエクセルのSheet1のA10に162300017004と入ったとします、Sheet2の「黄/17.0」という元リストの数値と符合するので、Sheet1の「黄/17.0」に1がカウントされます。

補足日時:2010/04/17 15:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!