以前質問しました、年月日と時間の上書きについてと内容が似ていますが
コードの形式を変えたので再度質問致します。
前回とは異なり、今回はリストボックスを使うことにしました。
リストボックスで例えば10/3を選んだら、4列目の11:00と19:00を
修正出来るようにしたいのですが、10/1の時刻のところに上書きされてしまいました。
特にVBAに明るくない上司から急かれながら色んなものを参考にしながら進めていますが、なかなか上手くいきません・・。
リストボックス用の変数の宣言が必要なのでしょうか?
行の位置特定に何が必要でしょうか?
若しくはリストボックスにこだわらずとも、他のやり方があれば教えていただけると幸いです・・。
ご教授お願い致します。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Private Sub UserForm_Initialize() ’リストボックス、「勤怠修正」フォーム Dim lastrow As Long Sheets("10").Select With ListBox1 .ColumnHeads = True .ColumnCount = 3 .ColumnWidths = "70;50;50" .RowSource = "10!A2:C32" End With End Sub Private Sub cbform5go_Click() '編集フォーム、修正ボタン Dim tgtRow As Long Dim fnd As Range tgtRow = form4.ListBox1.ListIndex + 3 With Sheet2 .Cells(tgtRow, 2).Value = Me.tx2.Value '出勤時刻 .Cells(tgtRow, 3).Value = Me.tx3.Value '退勤時刻 End With End Sub Private Sub UserForm_Initialize() Dim tgtRow As Long Dim fnd As Range tgtRow = form4.ListBox1.ListIndex + 3 With Sheet2 Me.tx2.Value = Format(.Cells(tgtRow, 2).Value, "hh:mm") Me.tx3.Value = Format(.Cells(tgtRow, 3).Value, "hh:mm") End With End Sub
試したこと
tgtRow = form4.ListBox1.ListIndex + 2
※form4 = リストボックスがある、勤怠修正フォームの名前
⇒「出勤時刻」「退勤時刻」が取得され、編集のテキストボックスに表示される。
+3,+4とすると取得する行が一つずつ下がるだけなので
勤怠修正フォームで選択した行に上書きされない。
Dim tgtRow As Long
tgtRow = Listbox1.Value
⇒変数を定義してくださいのエラー文
補足情報(FW/ツールのバージョンなど)
Dim tgtRow As Long
Dim fnd As Range
tgtRow = form4.ListBox1.ListIndex + 3
With Sheet2
Me.tx2.Value = Format(.Cells(tgtRow, 2).Value, "hh:mm")
Me.tx3.Value = Format(.Cells(tgtRow, 3).Value, "hh:mm")
End With
を、編集ボタンのところに書けば良いのか、 UserForm_Initialize()に書けば
良いのかわからないのでどちらにも置いてます・・・。

回答1件
あなたの回答
tips
プレビュー