プロが教えるわが家の防犯対策術!

Excelでバーコードリーダーで読み込ませた値(例えばA1など、)のセルに読み込んだ日時を自動で表示させて、それを連続でできる方法はありますか?

Excel初心者で、分からないことが多いため初心者でも、分かりやすく教えていただけると嬉しいです。

分かる方がいましたらよろしくお願いします。

質問者からの補足コメント

  • 質問にお答え頂きありがとうございます!

    そちらの方法で1度やってみます。

    ですが、私の説明不足で、やりたいことが出来るか不安な所があるのですが、例えばC1Enterと入力されればD1に、時刻は表示されるのでしょうか?

    それと、名簿を作って、その横にバーコード入力された時の時間を書き込みたいので、例えばA1を入力されたあとにA32、C15のようにランダムに入力された時にA1と読み込まれたらB1に、A32だったらB32に、C15だったら、D15に読み込まれた時の時間が表示されるようになっていますでしょうか?

    私の説明不足で2回も質問することになってしまいすみません。

    もしよろしければ、ご回答頂けるととてもありがたいです。

    よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/04/23 19:41
  • 説明不足ですみません!

    初心者で、分からないことが多いため、やりたい事を書かせていただきます。

    生徒名簿を作って全員のノートにバーコードをつけ、バーコードリーダーで読み取った人の横のセルに読み取った時の時間を入力出来るようにしたいと思っています。

    よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/04/23 21:30

A 回答 (4件)

No.2です。


>バーコードリーダーで読み取った人の横のセルに読み取った時の時間を入力
>出来るようにしたいと思っています。

ということであれば、作成された表のセル番地ではなく、生徒番号など一意に決められたものをバーコード化し、名簿には生徒番号と氏名を併記すべきです。
作成された表のセル番地でバーコードを作成してしまうと、バーコード作成後は、名簿の表に対して、見出し行の追加、列の追加、名簿の並び替え、名簿(例.あいうえお順)への生徒の追加等々、セル番地に影響を与える名簿の形式の変更は一切できなくなってしまいます。

バーコードリーダーを使用した入力では、「キーボードエミュレータ」として動作するので、普通はバーコードリーダーの設定で「Enter」キーの押下を付与します(殆どの製品は工場出荷状態がEnterキー押下付与設定済みだと思います)。セル番地を意識するのではなく、入力列を定めてバーコードを読込みすると、アクティブセルに読込値が入力され、読込位置が一つ下のセルに移動します。こうすることで次々とバーコードを連続して読込むことができるわけです。
また、バーコードリーダーでの処理を要するケースでは、処理件数がそれなりに多いのが一般的です。
一列に入力していく方式であれば、処理件数は行数と一致し、データも読込順に並んでいますので、「読込もれ」「感知ミス」「ノート未提出(?)」などが発見し易いというメリットがあります。
No.1さんのVBAもこうした考えのもと、A列のセルにバーコードの値を読込みすると、B列の同じ行に読込み日時を表示するというものだと思います。

通常ならバーコードには一意の識別コード(生徒番号等)が記録されているので、読込により「A.生徒番号と日時の一覧表」が作成され、既存の「B.生徒番号と生徒氏名」と二つの表が出来る訳です。あとは「A.」の生徒番号が「B.」の生徒番号と一致した者の氏名の横に日時を表示するようにしておけば、バーコード読込完了と同時に「B.」への表示も完了します。

ここからは完全な推測ですが、仮にご質問者がA列とC列に生徒名を入れた名簿を作成済みで、生徒名と紐付いたセル番地をバーコード化してB列とD列に「日時」を表示したいのであれば、前述の理由からお勧めはしませんが、以下の方法で可能です。

(1)まず、名簿をSheet1とします。見出し行などはなく、A1から名前が入力されているものとします。
(2)Sheet2にNo.1さんの回答にあるVBAを若干修正した、以下のコードをシートモジュールとして記述します。
※ fujillinさん流用をお許しください。
※セル番地は「A10+チェックデジット」のような形式でバーコード化されているものとします。(チェックデジットなしのバーコードも作成可能ですが、読込時にオートコンプリート機能をオフにしないと正しく読込できない可能性があります。以下のVBAはチェックデジット付きを前提としています。)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Column <> 1 Then Exit Sub
Add = Left(Target.Value, Len(Target.Value) - 1)
With Sheets(1).Range(Add).Offset(, 1)
.NumberFormatLocal = "yyyy/m/d h:mm;@"
.Value = Now()
.EntireColumn.AutoFit
End With
End Sub

(3)次にSheet2を開いて、A1セルを選択し、バーコードの読込を開始します。これで、読込の都度、A列に「チェックデジット付きセル番地」が順次表示されていくはずです。
(6)読込が完了したらSheet1を開くと、読込んだ生徒の分の日時が所定のセルに表示されているはずです。

これで、ご質問者の要望は一応実現すると思います。
    • good
    • 2
この回答へのお礼

助かりました

私の質問にお答え頂きありがとうございます。

やりたい事は推測で書いてくださったことその通りです。

その方法でやってみます。

ありがとうございました!

お礼日時:2021/04/24 21:18

No1です。



>読み込まれた時の時間が表示されるようになっていますでしょうか?
なっていません。
No1に書いてある通りで、「A列に入力があったら、B列に日時が表示される」サンプルです。(行はどこでも可能)

単純に「A列に」の限定を外したいだけなら、最初の「A列のチェック」を外せばそのようになります。

他にもいろいろなさりたいのであれば、大概のことはコードの記述内容を変えることで可能です。
検索すれば、いろいろな参考サイトが見つかることと思いますので、調べてみてください。
    • good
    • 2
この回答へのお礼

ありがとう

ご返答ありがとうございます。

色々調べて見ます。

分かりやすく教えていただき、ありがとうございました!

お礼日時:2021/04/23 21:37

ご質問者の説明のとおりだとすると、バーコードにはセル番地が記録されていることになります。


しかし、このセル番地はなにを意味しているのでしょうか?
バーコードを発行するときに、どうやってセル番地を一意に決定するのでしょうか?

>セルに読み込んだ日時を自動で表示させて、それを連続でできる方法はありますか?

と聞かれれば「あります」なのですが、例えば最初に読み込んだバーコードが「A1」でここに今日の日付「2021/4/23」を表示させたとして、二番目に読み込んだバーコードが「A500」だとすると。ここにも「2021/4/23」にが表示されます。
さらに、三番目に読み込んだバーコードが「A1000」だとするとA1000にも「2021/4/23」が表示されます。
A1、A500、A1000にそれぞれ今日の日付が表示された、やたら隙間だらけの縦長の表ができるわけですが、こんな表ができてもとても実用に耐えるとは思えません。
ご質問者は何か勘違いをされておられるか、説明が正しく伝わらないか、どちらかではありませんか?

No.1さんも
>ご質問文はコードに上書きするような記述になっていますけれど、それならコードを入力する必要がなくなってしまう
とご指摘のように、質問内容が理解できない部分があるのです。

No.1さんの回答のように、バーコード(内容はセル番地ではないもの)をA1に読み込み、別セルに日付を表示するという意味なら理解できますが・・・。
この回答への補足あり
    • good
    • 2

こんにちは



マクロを使えば可能でしょう。

バーコード入力の最後にEnterコードが付加されているものとして…

以下は、コード入力がA列にされた場合に、B列に日時を表示する例です。
(ご質問文はコードに上書きするような記述になっていますけれど、それならコードを入力する必要がなくなってしまうので、B列に変えてあります。)

対象シートのシートモジュール(=シートタブを右クリックして「コードの表示」を選択したときの画面)に以下を記述。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Column <> 1 Then Exit Sub
With Target.Offset(, 1)
 .NumberFormatLocal = "yyyy/m/d h:mm;@"
 .Value = Now()
 .EntireColumn.AutoFit
End With
End Sub

※ バーコード環境がないので、実機でのテストはしていませんが、悪しからず。
この回答への補足あり
    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A