エクセルマクロで列を削除したい
エクセル2013です。
マクロの途中で列を削除するようにしてあります。
A列~J列、N列~Q列、T列~U列、W列~Y列を一括削除なのですが
A列~J列だけは、作業者が選択した1列だけを残して削除をしたいです。
マウスで選択させて、列を指定する所までは作成できましたが
列削除の部分(★の部分)が
思うように作成できず完成できません。
アドバイスをお願いいたします。
Sub 列削除()
Dim マウス選択
Dim 選択列
Dim 選択月表示
Dim 質問
On Error GoTo myError 'INPUT-BOXでキャンセルを選択した時の回避
Set マウス選択 = Application.InputBox("回覧用に編集したい月の列を選択してください", Type:=8)
If マウス選択.Columns.Count > 1 Then '選択したしたのが列で有り1列であるか確認
MsgBox "選択したのは列ではありません。又は2列以上を選択しています"
MsgBox "プログラムを中断します"
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Exit Sub 'プログラム停止
End If
If マウス選択.Rows.Count > 1 Then '選択したのが行又はセルの場合の処理
Else
MsgBox "行又はセルを選択しています。1列を選択してください"
MsgBox "プログラムを中断します"
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Exit Sub 'プログラム停止
End If
Set マウス選択 = マウス選択.EntireColumn
Debug.Print マウス選択.Address
選択列 = マウス選択.Column 'INPUT-BOXで選択した列を数字に置き換える
選択月表示 = Cells(2, 選択列).Value '選択した列の8行目のセルの値を格納
If 選択列 > 10 Then '選択したのが11列以上の場合の処理
MsgBox "11列目以降は選択できません"
MsgBox "プログラムを中断します"
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Exit Sub 'プログラム停止
End If
質問 = MsgBox("選択した月は " & 選択月表示 & " です。いいですか?", vbYesNo)
If 質問 = vbYes Then
MsgBox "処理を行います"
'不要列削除
★ Union(Columns("A:J"),Columns("N:Q"), Columns("T:U"), Columns("W:Y")).Delete
Else
MsgBox "プログラムを中断します"
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Exit Sub 'プログラム停止
End If
Exit Sub 'エラーが出なかった時のmyErrorの回避用
myError: 'INPUT-BOXでキャンセルを押した時の処理
MsgBox "キャンセルが押されました。プログラム終了します。"
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Exit Sub
End Sub
お礼
あ!いいですね、コレ! 単純で、しかもカッコイイ(?)・・・ 私が思い描いていたのに近いように思います。 使わせていただきます。 ありがとうございました。