- ベストアンサー
ユーザーフォームを使った勤怠打刻システムの作成方法
- ユーザーフォームを使用して勤怠打刻システムを作成する方法を教えてください。具体的には、TextBoxを使用して時間や日付を入力し、それをセルに反映させる方法が知りたいです。
- ユーザーフォームの構成はTextBox1に時間、TextBox2に分を入力し、それをTextBox3に表示させ、セルのG列とH列に反映させる方法です。また、TextBox4にはセルのB列の値を表示させたいです。
- 現在、ユーザーフォームを作成していますが、セルの選択が変わってもTextBox4の値が変わらない状況です。どのように修正すれば良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 可能でしたらTextBox1にフォーカス移動したときに日付変更としたいです。 ユーザーフォームに 以下の感じでいかかがですか。 G1:H10の範囲は実際の範囲にしてください。 Private Sub TextBox1_Enter() If Not Intersect(Selection, Range("G1:H10")) Is Nothing Then Me.TextBox4 = Cells(Selection.Row, "B").Value End If End Sub
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
B列の入力がどのようになっているのか分からないのと、G、H列への出力タイミングがよく分からないので、ボタン1つで処理し、B列の入力を確認しています。 フォーム立ち上げ時に日付を表示し、TextBox4の表示は「yyyy/m/d」にしています。 当方、win10、Excel2010です。 ユーザーフォームのコードウインドウの例です。ご参考に。 Dim wRow As Long '// 出力行 Dim wColumn As Integer '// 出力列(G列) Private Sub CommandButton1_Click() Cells(wRow, wColumn) = TextBox3.Text wColumn = wColumn + 1 If wColumn = 9 Then wRow = wRow + 1 wColumn = 7 End If If Cells(wRow, 2).Value <> "" Then TextBox4.Text = Format(Cells(wRow, 2).Value, "yyyy/m/d") Else MsgBox "出力行に日付が入力されていません" End If End Sub Private Sub UserForm_Activate() If Cells(wRow, 2).Value = "" Then MsgBox "選択行に日付が入力されていません" Unload Me End If End Sub Private Sub UserForm_Initialize() wRow = ActiveCell.Row wColumn = 7 TextBox4.Text = Format(Cells(wRow, 2).Value, "yyyy/m/d") End Sub
補足
B列は既に入力してあり、カレンダーのようになっています(表示形式は20○○年〇月〇日)。 ユーザーフォームは常に開いた状態で G1を選択しコマンドボタン1をクリックするとG1へ入力されます。 コマンドボタンを押したタイミングで次のセル(この場合H1)へ移動します。 ユーザーフォームを開いた状態で次のセルへ移動となります。
- kkkkkm
- ベストアンサー率66% (1742/2617)
選択が変更されたらかボタンを押したらなのかは分かりませんがそこに Me(もしくはフォーム名).TextBox4 = Cells(Selection.Row, "B").Value でいかがですか。
補足
ご回答ありがとうございます。 現段階でシートに Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Unprotect Dim f As Long f = Selection.row Worksheets(3).Range("AF15") = Worksheets(3).Cells(f, 2).Value ActiveSheet.Protect End Sub ----------------------------------------------------------------------------------------- If Not Intersect(Target, Range("AF15")) Is Nothing Then UserForm2.TextBox4 = Worksheets(3).Range("AF15").Value End If ユーザーフォームに Me.TextBox4 = Format(Range("AF15"), "Long Date") を記入しています。 セルの選択が変更されたら日付を変更したいのですが、 可能でしたらTextBox1にフォーカス移動したときに日付変更としたいです。
お礼
早速のお返事ありがとうございます。 無事解決いたしました。 感謝致します