前提・実現したいこと
テキストボックスに転記、セルからテキストボックスへ値を出力が上手くいきません。
前回の質問でご回答頂いたコードを参考に進めていますが
現状、ユーザーフォームを開いても各テキストボックスに値は表示されず、テキストボックスから
セルへの暗記も424エラーが出てしまい上手くいかない状態です。
そもそもシートが複数あるので、どのシートのセルなのか判断できていないのか
(月選択の際に該当シートがSelectされるようにはしていますが、保存出力のところで反映されていないのか)
テキストボックスで入力する際に「10:00」と手入力するけど、format関数が必要なのか・・・。
構造体で「date」を使っていて、テキストボックスでは文字列(string)だからなのか・・。
ご教授頂けると幸いです・・・(今回構造体の使用が必須となっています)
上記のように様々な要素が思い当たるのですが、例としてよくある
Sub macro1()
Call func1
End Sub
Function func1() As String
MsgBox "Hello VBA!"
End Function
みたいに最初から入れるものが分かっているわけではない、尚且つ今回みたいに日にち指定の
テキストボックスが複数あるパターンの書き方がいまいち理解出来ていないためこのタイプのエラーでずっと躓いています・・。
発生している問題・エラーメッセージ
monthly(i).starttime = Cells(i + 2, 3)の部分で「424: オブジェクトが必要です」のエラー 恐らくこの下もそうなります・・。ここで出るということは出力の Me.Controls("txtStarttime" & i).Value = monthly(i).starttime の部分も可能性はあると思っています。
該当のソースコード
Type attendance '標準モジュール starttime As Date '始業時刻 endtime As Date '終業時刻 breakstart As Date '休憩時間のはじめ breakend As Date '休憩時間のおわり worktime As Single '実働時間 note As String '備考 End Type '以下はユーザーフォーム Private Sub cmbMonth_Change() '月選択プルダウン ※選んだ月のシートがセレクト状態になる SetWeekLabel On Error Resume Next Worksheets(cmbMonth.Text).Select Dim i As Integer For i = 1 To 12 cmbMonth.AddItem i Next End Sub Private monthly() As attendance 'オブジェクトの定義 Public Sub AttendanceSave() '勤怠保存 ReDim monthly(1 To 31) Dim i As Long For i = 1 To 31 monthly(i).starttime = Cells(i + 2, 3) monthly(i).endtime = Cells(i + 2, 4) monthly(i).breakstart = Cells(i + 2, 5) monthly(i).breakend = Cells(i + 2, 6) monthly(i).worktime = Cells(i + 2, 7) monthly(i).note = Cells(i + 2, 8) Next i End Sub Public Sub SetAttendance() '勤怠出力 Dim i As Long Sheets(cmbMonth.Value).Activate For i = LBound(monthly) To UBound(monthly) Me.Controls("txtStarttime" & i).Value = monthly(i).starttime Me.Controls("txtEndtime" & i).Value = monthly(i).endtime Me.Controls("txtBreakstart" & i).Value = monthly(i).breakstart Me.Controls("txtBreakend" & i).Value = monthly(i).breakend Me.Controls("txtWorktime" & i).Value = monthly(i).worktime Me.Controls("txtNote" & i).Value = monthly(i).note Next i End Sub Private Sub CommandButton1_Click() '更新ボタン(テキストボックスからセルへの登録処理) Call AttendanceSave Call SetAttendance End Sub
試したこと
試しに本来の構造ではないのですが(テキストボックスが31日分あるので)
テキストボックスを6個にして、txtStarttime1などの1のものだけ使用して
やったら424のエラーは出ませんでした(それでも本来やりたいことのセルへの暗記は出来ませんでしたが・・・)
補足情報(FW/ツールのバージョンなど)
・シート上での時刻系のセルの書式設定は「日付」
・実働時間は手入力ではなく、始業時刻と終業時刻から休憩時間を引いた時間で
出力されるようしたいのですが、現状はそちらはまだまだ未着手なのでそのままです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/17 07:30