回答編集履歴

2

補足の追加

2017/06/26 09:03

投稿

hatena19
hatena19

スコア33699

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  Dim SoundFile As String, rc As Long
36
36
 
37
- SoundFile = "C:\Users\PC\Music\iTunes\iTunes Media\abc.mp3" '多分有るかと?
37
+ SoundFile = "C:\Users\PC\Music\iTunes\iTunes Media\abc.mp3"
38
38
 
39
39
 
40
40
 
@@ -175,3 +175,71 @@
175
175
 
176
176
 
177
177
  バーコードリーダーでの読み取りエラーや、うっかりユーザーが編集してしまったりなども考慮すると、Worksheet_Change でデータが更新されたときに、チェックデジットを使って正しいバーコードかどうかをチェックして、正しくない場合に、警告音をだすというような仕様にするのがいいのではないでしょうか。
178
+
179
+
180
+
181
+ 補足説明
182
+
183
+ --
184
+
185
+
186
+
187
+ 詳細な仕様が判明したようでので、それに合わせて補足です。
188
+
189
+
190
+
191
+ 判明している仕様。
192
+
193
+ - 「C4セル」にバーコードリーダーからJANコードを読み込む。
194
+
195
+ - 毎回入力するセルは「C4」となる。
196
+
197
+ - 「C4」をキーワードにして「D4」セルにVLOOKUPで表品名を表示している。
198
+
199
+
200
+
201
+ MP3再生のコードは、Windows APIの関数を参照してVBAから呼び出しているだけです。
202
+
203
+ 参照するコードは理解するのは難しいかもしれませんが、そういう魔法の呪文だと思って、コピーして使えばいいでしょう。そのままコピーして標準モジュールに貼り付けてください。
204
+
205
+
206
+
207
+ 今回の仕様なら、ワークシートのChangeイベントを使う方法でも問題ないでしょう。
208
+
209
+
210
+
211
+ その場合のコード例。
212
+
213
+ ```
214
+
215
+ Private Sub Worksheet_Change(ByVal Target As Range)
216
+
217
+ If Target.Address = "$C$4" And ActiveCell.Address = "$C$5" Then
218
+
219
+ If Not IsError(Range("D4").Value) Then
220
+
221
+ PlaySound 'MP3 再生処理
222
+
223
+ Range("C4").Select
224
+
225
+ End If
226
+
227
+ End If
228
+
229
+ End Sub
230
+
231
+ ```
232
+
233
+
234
+
235
+ コピー先は『「シート名」のあるタブ内で右クリックして、出てきたメニューの「コードの表示」をクリック。』して表示された場所です。
236
+
237
+
238
+
239
+ Enterキーの判定は、Changeイベントの発生したセル(Target.Address)、移動先のセル(ActiveCell.Address)で判定しています。
240
+
241
+ さらに、「D4」セルにエラーなく商品名が表示されているかどうか、で読み込まれたバーコードが正しいかどうか判断しています。
242
+
243
+
244
+
245
+ 完全な判定ではないですが、通常の運用なら問題はないと思われます。

1

書式の改善

2017/06/26 09:03

投稿

hatena19
hatena19

スコア33699

test CHANGED
@@ -92,6 +92,8 @@
92
92
 
93
93
 
94
94
 
95
+ ```
96
+
95
97
  Private Sub Worksheet_Change(ByVal Target As Range)
96
98
 
97
99
  If Target.Address = "$C$4" Then
@@ -101,6 +103,8 @@
101
103
  End If
102
104
 
103
105
  End Sub
106
+
107
+ ```
104
108
 
105
109
 
106
110