• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルの内容をテキストボックスへ反映)

ユーザーフォームを使った勤怠打刻システムの作成方法

このQ&Aのポイント
  • ユーザーフォームを使用して勤怠打刻システムを作成する方法を教えてください。具体的には、TextBoxを使用して時間や日付を入力し、それをセルに反映させる方法が知りたいです。
  • ユーザーフォームの構成はTextBox1に時間、TextBox2に分を入力し、それをTextBox3に表示させ、セルのG列とH列に反映させる方法です。また、TextBox4にはセルのB列の値を表示させたいです。
  • 現在、ユーザーフォームを作成していますが、セルの選択が変わってもTextBox4の値が変わらない状況です。どのように修正すれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.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

noname#239756
質問者

お礼

早速のお返事ありがとうございます。 無事解決いたしました。 感謝致します

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

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

noname#239756
質問者

補足

B列は既に入力してあり、カレンダーのようになっています(表示形式は20○○年〇月〇日)。 ユーザーフォームは常に開いた状態で G1を選択しコマンドボタン1をクリックするとG1へ入力されます。 コマンドボタンを押したタイミングで次のセル(この場合H1)へ移動します。 ユーザーフォームを開いた状態で次のセルへ移動となります。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

選択が変更されたらかボタンを押したらなのかは分かりませんがそこに Me(もしくはフォーム名).TextBox4 = Cells(Selection.Row, "B").Value でいかがですか。

noname#239756
質問者

補足

ご回答ありがとうございます。 現段階でシートに 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にフォーカス移動したときに日付変更としたいです。

関連するQ&A