シリアル番号はおそらくいくつかの記事に関連付けられており、既に複数の場所とユーザーを考えているので、Access を使用することをお勧めします。
これはすべてデータベースに依存しており、Excel のようにセットアップするのはそれほど直感的ではないかもしれませんが、最終的には、重複をキャッチしてクエリを作成する際に、はるかに堅牢で扱いやすくなります。
ただし、両方の方法で実行できます。ただし、使用しないnow()
でください。この関数は、再計算されるたびに時間を更新するためです。そのため、何度も同じ時間を取得します。
時間を動的コンテンツとしてではなく固定テキストとして挿入する関数を作成して呼び出す必要があります。
ただし、Access では、フィールドのデフォルト値として now-function を使用しても機能します。database-entry が関数ではなく値になるからです。
Excel の場合、新しいワーカーをアクティブ化するときに、この関数を強化し、キーリスナーを作成/アクティブ化する必要があります。
'This code goes into a VBA-Module
'and can be access on a Worksheet calling =myScan("test")
Public Function myScan(strWorker As String)
Table1.Cells(2, 1) = "1"
Table1.Cells(2, 2) = strWorker
Table1.Cells(2, 3) = Now()
End Function
シリアル番号は行から取得できます。主な問題は、現在/次の行にとどまってデータを貼り付けることです。
ただし、たとえば、Excel ダイアログを作成してワーカーを選択し、スキャン モードを有効にしてスキャンすることもできます。データを Excel に保存するのではなく、Web または Access データベースに接続することもできます。これを強くお勧めします。 ;)
編集
'This code works, when you place it as the VBA-Code of your worksheet
Private Sub Worksheet_Change(ByVal Target As Range)
'react only on changes on column A
If (Target.Column = 1) Then
'react only on changes on column A when the row is greater than 5
If (Target.Row > 5) Then
'use the current time for Bx
Me.Cells(Target.Row, 2) = Now()
'use the user-name from C2 in Cx
Me.Cells(Target.Row, 3) = Me.Cells(2, 3)
End If
End If
End Sub
VBA エディターを開き、使用ALT+F11
するテーブル オブジェクトを選択し、上記のコードを配置して、マクロ Excel ドキュメントとして保存します。
ワークシートは次のようになります。

A6-Ax から何かを変更するたびに、自動的に更新されます。