前提・実現したいこと
何度も申し訳ございません。
調べてもわからないのでヒント等教えていただければ幸いです。
ユーザーフォームに登録いうボタンがあるのですが、
そのボタンを押した際、E列を検索し同じ日にちと社員番号があれば
上書きするかの確認と、上書きしてもOKな場合、内容の上書き
登録済のものがなければ新規で登録したいと思っています。
新規の登録の方はうまくいくのですが検索上書きがうまくできません、、
説明がへたくそなためわかりづらく大変申し訳ないのですが解決策等ございましたら
教えていただきたいです。よろしくお願いいたします。
||C|D|E|F|G|H|
|:--|:--:|--:|
|1|予定日|社員番号|=C&E|行先1|行先2|戻時間|
|2|3/10|1234|439001234|新規|登録|しました|
|3|3/11|1234|439011234|新規|登録|しました|
|4|3/12|1234|439021234|新規|登録|しました|
|5|3/13|1234|439031234|新規|登録|しました|
(E列には=C1&E1を相対コピーするコードを書いて入れています)
発生している問題・エラーメッセージ
For
1If Tgtnm = Date1 + i & 1234 Then 2Tgtnm.Select 3msg = MsgBox("登録済ですが上書きしますか?", Buttons:=vbYesNo) 4If msg = vbYes Then 5ActiveCell.Offset(0, 1) = "上書き" 6ActiveCell.Offset(0, 2) = "され" 7ActiveCell.Offset(0, 3) = "ました" 8Else 9MsgBox "入力を終了します" 10End If
上記コードを上書き、検索に使えるだろうと思いコードを書いていったですが
上書きどころか新規での登録もできなくなってしまいました。
間違っているところはここだと思っていますが他にも修正すべき点、解決策や改善策等あれば教えていただきたいです<(_ _)>
該当のソースコード
VBA
1Sub btm登録() 2 Dim Date1 As Date 3 Dim Date2 As Date 4 Dim i, j, lastRow 5 Dim ws As Worksheet 6 Dim Tgtnm As Variant 7 Dim msg As VbMsgBoxResult 8 9 10 Set ws = Worksheets("予定表") 'シートセット 11 12 Date1 = txt予定日.value '例)3/10 13 Date2 = txt帰社日.Value '例)3/13 14 15 lastRow = ws.Cells(Rows.Count, 3).End(xlUp).Row '一番下の行の取 16 ws.Activate 'シートの選択 17 18 For i = 0 To DateDiff("d", Date1, Date2) 19 For Each Tgtnm In Range("E:E") 20 If Tgtnm = Date1 + i & 1234 Then 21 Tgtnm.Select 22 msg = MsgBox("登録済ですが上書きしますか?", Buttons:=vbYesNo) 23 If msg = vbYes Then 24 ActiveCell.Offset(0, 1) = "上書き" 25 ActiveCell.Offset(0, 2) = "され" 26 ActiveCell.Offset(0, 3) = "ました" 27 Else 28 MsgBox "入力を終了します" 29 End If 30 Else 31 Cells(i + lastRow + 1, 3) = DateAdd("d", i, Date1) 32 Cells(i + lastRow + 1, 4) = txt社員番号'例)1234 33 Cells(i + lastRow + 1, 5).FormulaR1C1 = Cells(i + lastRow, 5).FormulaR1C1 34 Cells(i + lastRow + 1, 6) = "新規" 35 Cells(i + lastRow + 1, 7) = "登録" 36 Cells(i + lastRow + 1, 8) = "しました" 37 End If 38 Next 39 Next 40End Sub 41``` 42 43### 補足情報(FW/ツールのバージョンなど) 44エクセル2016
回答2件
あなたの回答
tips
プレビュー