回答編集履歴
2
補足の追加
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
Sub PlaySound()
|
18
18
|
Dim SoundFile As String, rc As Long
|
19
|
-
SoundFile = "C:\Users\PC\Music\iTunes\iTunes Media\abc.mp3"
|
19
|
+
SoundFile = "C:\Users\PC\Music\iTunes\iTunes Media\abc.mp3"
|
20
20
|
|
21
21
|
If Dir(SoundFile) = "" Then
|
22
22
|
MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
|
@@ -86,4 +86,38 @@
|
|
86
86
|
|
87
87
|
[JANコードのチェックデジットを計算する関数 ~ Access VBA自作関数 - Office Tanabe](http://www.mtanabe.com/tips.php?tips_id=1)
|
88
88
|
|
89
|
-
バーコードリーダーでの読み取りエラーや、うっかりユーザーが編集してしまったりなども考慮すると、Worksheet_Change でデータが更新されたときに、チェックデジットを使って正しいバーコードかどうかをチェックして、正しくない場合に、警告音をだすというような仕様にするのがいいのではないでしょうか。
|
89
|
+
バーコードリーダーでの読み取りエラーや、うっかりユーザーが編集してしまったりなども考慮すると、Worksheet_Change でデータが更新されたときに、チェックデジットを使って正しいバーコードかどうかをチェックして、正しくない場合に、警告音をだすというような仕様にするのがいいのではないでしょうか。
|
90
|
+
|
91
|
+
補足説明
|
92
|
+
--
|
93
|
+
|
94
|
+
詳細な仕様が判明したようでので、それに合わせて補足です。
|
95
|
+
|
96
|
+
判明している仕様。
|
97
|
+
- 「C4セル」にバーコードリーダーからJANコードを読み込む。
|
98
|
+
- 毎回入力するセルは「C4」となる。
|
99
|
+
- 「C4」をキーワードにして「D4」セルにVLOOKUPで表品名を表示している。
|
100
|
+
|
101
|
+
MP3再生のコードは、Windows APIの関数を参照してVBAから呼び出しているだけです。
|
102
|
+
参照するコードは理解するのは難しいかもしれませんが、そういう魔法の呪文だと思って、コピーして使えばいいでしょう。そのままコピーして標準モジュールに貼り付けてください。
|
103
|
+
|
104
|
+
今回の仕様なら、ワークシートのChangeイベントを使う方法でも問題ないでしょう。
|
105
|
+
|
106
|
+
その場合のコード例。
|
107
|
+
```
|
108
|
+
Private Sub Worksheet_Change(ByVal Target As Range)
|
109
|
+
If Target.Address = "$C$4" And ActiveCell.Address = "$C$5" Then
|
110
|
+
If Not IsError(Range("D4").Value) Then
|
111
|
+
PlaySound 'MP3 再生処理
|
112
|
+
Range("C4").Select
|
113
|
+
End If
|
114
|
+
End If
|
115
|
+
End Sub
|
116
|
+
```
|
117
|
+
|
118
|
+
コピー先は『「シート名」のあるタブ内で右クリックして、出てきたメニューの「コードの表示」をクリック。』して表示された場所です。
|
119
|
+
|
120
|
+
Enterキーの判定は、Changeイベントの発生したセル(Target.Address)、移動先のセル(ActiveCell.Address)で判定しています。
|
121
|
+
さらに、「D4」セルにエラーなく商品名が表示されているかどうか、で読み込まれたバーコードが正しいかどうか判断しています。
|
122
|
+
|
123
|
+
完全な判定ではないですが、通常の運用なら問題はないと思われます。
|
1
書式の改善
answer
CHANGED
@@ -45,11 +45,13 @@
|
|
45
45
|
|
46
46
|
エンターキーで何らかの処理をさせるには、他の方の回答にもありますワークシートのChangeイベントが簡単でしょう。
|
47
47
|
|
48
|
+
```
|
48
49
|
Private Sub Worksheet_Change(ByVal Target As Range)
|
49
50
|
If Target.Address = "$C$4" Then
|
50
51
|
PlaySound 'MP3 再生処理
|
51
52
|
End If
|
52
53
|
End Sub
|
54
|
+
```
|
53
55
|
|
54
56
|
ただし、Enterキー以外でも反応してしまいます。Deleteキーや貼り付けなどの操作でワークシートのデータが変更されたときに反応します。
|
55
57
|
|