削除確認が2回ある行削除マクロ
を作りました。
動きとしてはこんな感じです。
ソースは下記の通りです。
-------
Sub 行削除()
Dim DelFlg_1 As Integer
Dim DelFlg_2 As Integer
Dim ColNo As Integer
Dim DelFlg_2 As Integer
Dim ColNo As Integer
'削除確認(1回目)
DelFlg_1 = MsgBox("削除しますか?", vbYesNo + vbExclamation + vbDefaultButton2, "削除確認")
DelFlg_1 = MsgBox("削除しますか?", vbYesNo + vbExclamation + vbDefaultButton2, "削除確認")
If DelFlg_1 = vbYes Then
'1回目応答が「はい」の時、削除確認(1回目)
DelFlg_2 = MsgBox("本当に削除しますか?", vbYesNo + vbExclamation + vbDefaultButton2, "削除確認")
If DelFlg_2 = vbYes Then
'シート選択
Worksheets("xxx").Select
'現在選択しているセル位置を取得
ColNo = ActiveCell.Row
'行削除
ActiveSheet.Cells(ColNo, 1).Select
Selection.Value = ""
ActiveSheet.Cells(ColNo, 2).Select
Selection.Value = ""
ActiveSheet.Cells(ColNo, 3).Select
Selection.Value = ""
ActiveSheet.Cells(ColNo, 4).Select
Selection.Value = ""
MsgBox "削除しました。"
End If
End If
DelFlg_2 = MsgBox("本当に削除しますか?", vbYesNo + vbExclamation + vbDefaultButton2, "削除確認")
If DelFlg_2 = vbYes Then
'シート選択
Worksheets("xxx").Select
'現在選択しているセル位置を取得
ColNo = ActiveCell.Row
'行削除
ActiveSheet.Cells(ColNo, 1).Select
Selection.Value = ""
ActiveSheet.Cells(ColNo, 2).Select
Selection.Value = ""
ActiveSheet.Cells(ColNo, 3).Select
Selection.Value = ""
ActiveSheet.Cells(ColNo, 4).Select
Selection.Value = ""
MsgBox "削除しました。"
End If
End If
End Sub
-------
シートは現在Activeのものを使用しないのにセルだけActiveのものを使用するというのが変な感じです。
Activeなシート、セルを利用するマクロは、Activeな対象に対する操作であることが直感的にわかりやすい、ショートカットキーで使うのが適切だと思います。エクセルの外でも使えれば可能性が広がりそうな感じがします。