私は現在、イニシアチブとして代替出席監視システムに取り組んでいます。現在、私は以下のようなユーザーフォームをデザインしています: タイムスタンプユーザーフォーム
それはこのように動作します:
従業員は、使用するタイムスタンプのタイプを選択します: タイムイン、タイムアウト、1 回目の休憩開始、1 回目の休憩終了、2 回目の休憩開始、または 2 回目の休憩終了。
次に、従業員バーコード フィールドに従業員番号が入力されます。
現在、私はこのコードを持っています:
Private Sub CancelButton_Click()
Unload Me
End Sub
Private Sub ClearButton_Click()
Call UserForm_Initialize
End Sub
Private Sub OKButton_Click()
Dim emptyRow As Long
'Make Sheet1 active
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1
'Transfer information
If TimeOptionButton1.Value = True Then
Cells(emptyRow, 5).Value = "Yes"
End If
If TimeOptionButton2.Value = True Then
Cells(emptyRow, 7).Value = "Yes"
End If
If BreakOptionButton1.Value = True Then
Cells(emptyRow, 9).Value = "Yes"
End If
If BreakOptionButton2.Value = True Then
Cells(emptyRow, 11).Value = "Yes"
End If
If BreakOptionButton3.Value = True Then
Cells(emptyRow, 14).Value = "Yes"
End If
If BreakOptionButton4.Value = True Then
Cells(emptyRow, 16).Value = "Yes"
End If
Cells(emptyRow, 2).Value = BarcodeTextBox.Value
End Sub
Private Sub UserForm_Initialize()
'Set Time In as default
TimeOptionButton1.Value = True
'Empty BarcodeTextBox
BarcodeTextBox.Value = ""
End Sub
私は VBA コーディングの専門家ではありません。オンラインでコードを検索しただけです。上記のコードは、データが入力される次の空の行を決定します。ユーザーフォームに入力すると、シートの結果は次のようになります 。
ご覧のとおり、1 人の従業員のタイムスタンプが複数の行に入力されています。
ただし、私が望んでいたのは、1 つの従業員番号専用の行が 1 つだけであるため、すべてのタイムスタンプが複数の行ではなく 1 つの行にあることです。誰かがこれについて私を助けてくれることを願っています。入力された人事バーコードが既にシートにある場合は検索され、ある場合はタイムスタンプが同じ行に入力されるコードを持つことを考えました。オーバーブレイクや人員数の計算など、数式を簡単に定式化できるように、1 行にしたかったのです。
良きサマリア人をよろしくお願いします!:)