私は現在、代替出席監視システムをイニシアチブとして取り組んでいます。現在、私は、以下のいずれかのように見える私のユーザーフォームを設計した: Time Stamp UserformVBAプログラミング。ユーザーフォームから特定の行や列にデータをシートに転送する方法
それは次のように機能します。従業員は、彼/彼女が使用されるタイムスタンプの種類を選択します
- :時間のタイムアウト、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コーディング、の専門家ではないです。上のコードは、データが入力される次の空の行を決定します。ユーザーフォームに記入すると、シートの結果は次のようになります。 Results
ご覧のとおり、1人の従業員のタイムスタンプは複数の行に入力されています。
しかし、私が望んでいたのは、自分のタイムスタンプのすべてが1行で複数の行ではなくなるように、1行のみが1つの従業員番号専用になるということでした。私は誰かが私にこれを助けることを願っています。入力された人のバーコードが既にシート上にあればそれを検索し、そうであれば同じ行にタイムスタンプを入力するというコードを考えました。私はそれが1行にあることを望んだので、オーバーブレイクの計算や人数などの公式を簡単に公式化することができます。
良いサマリア人のために前もってありがとう! :)あなたのコードに最小限の変更に伴い
こんにちは@ASHを:)しかし、お返事どうもありがとうございます実行時にエラーが発生しました。本当にすごくうれしいです。 emptyRow = IIf(rFoundはNothing、Range( "B"&Rows.Count).End(xlUp).Row + 1、rFound.Row) ランタイムエラー'91を示します':オブジェクト変数またはWithブロック変数が設定されていません –
こんにちは@ChenilleMasangya、はい私はなぜそうですか。更新された返信を考慮してください:) –
ありがとうございます!それは今働いている!私は今、とても幸せです。 –