教えて下さい。
Excelのマクロで列を削除するマクロを作りたいと考えています。
動作としては、
「操作シート」の2行目のA2セルから1個1個に「A」「C」「E」と削除したい列番語を入力。
「データベースシート」のA列・C列・E列を削除する。
「操作シート」の2行目では、0~60個の列番号を指定し、列番号を指定する途中では空白は入らない。
0の場合は、「列番号が指定されていません。」とメッセージボックスを表示する。
としたいです。
ですので、
Columns(***).Delete
の***の部分を操作シートのA2セルから参照していき、空白が出るまで繰り返す。
といった処理をしたいのですが、どのように記述すれば可能なのでしょうか?
ご教授いただければ幸いです。
No.1ベストアンサー
- 回答日時:
こんにちは!
>Columns(***).Delete
>の***の部分を操作シートのA2セルから参照していき、空白が出るまで繰り返す。
のような操作にする場合、
行・列削除を順に行う場合は最終の行(列)から順に行う必要があります。
(頭から削除してしまうと、行・列が繰り上がってしまい、元の行(列)番号とずれてしまうため)
今回は一気にやる方法です。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, str As String
Dim myRng As Range, wS As Worksheet
Set wS = Worksheets("データベース")
With Worksheets("操作")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
str = .Cells(i, "A")
If myRng Is Nothing Then
Set myRng = wS.Cells(1, str)
Else
Set myRng = Union(myRng, wS.Cells(1, str))
End If
Next i
If Not myRng Is Nothing Then
myRng.EntireColumn.Delete
Else
MsgBox "列番号指定なし"
End If
End With
End Sub
※ 「操作」SheetのA列は必ず存在する列番号のアルファベットが入っているという前提です。
こんな感じではどうでしょうか?m(_ _)m
tom04 様
ご回答ありがとうございます。
頂いた内容で、A列に記述した列番号を纏めて削除する事が出来ました。
また、頂いた内容を自分なりに確認して以下のように改変し、2行目に記述した列番号を削除する事も出来ました。
最終行(列)の指定や、Rangeを変数として宣言する事、Unionセクションでの集約など、
まだまだ理解が足りない所もありますが、頂いた内容を見直しながら勉強していきたいと思います。
この度は、誠にありがとうございました。
Sub Sample()
Dim i As Long, str As String
Dim myRng As Range, wS As Worksheet
Set wS = Worksheets("データベース")
With Worksheets("操作")
For i = 1 To .Cells(2, Columns.Count).End(xlToLeft).Column
str = .Cells(2, i).Value
If myRng Is Nothing Then
Set myRng = wS.Cells(2, str)
Else
Set myRng = Union(myRng, wS.Cells(2, str))
End If
Next i
If Not myRng Is Nothing Then
myRng.EntireColumn.Delete
Else
MsgBox "列番号指定なし"
End If
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) 【VBA】A列の指定した値と同じ行にあるD列の値を順番にコピペするマクロについて 4 2023/02/01 18:16
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
エクセル マクロ 範囲指定で...
-
VLOOKUPの列番号の最大は?
-
エクセルのソートで、数字より...
-
VBA 指定した列にある日時デー...
-
EXCELを最大にて開いた際、特定...
-
エクセルマクロPrivate Subを複...
-
エクセルで?
-
列方向、行方向の定義
-
Excelの行数、列数を増やしたい...
-
LEFT関数とIF関数の組み合わせ...
-
VBA
-
VBAで重複データを合算したい(...
-
VBAで別ブックの列を検索し、該...
-
EXCELVBAでリストボックス複数...
-
エクセル 重複 隣の列 一番...
-
(初心者です)VBAでA列がBか...
-
エクセルでセル12個間隔で合...
-
VBA 選択範囲とUnionの使い方に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
列方向、行方向の定義
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
VBAで別ブックの列を検索し、該...
-
データシートビューのタイトル...
-
CSVファイルの「0落ち」にVBA
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
リストからデータを紐付けしたい
-
エクセルで最初の行や列を開け...
-
エクセルで複数列の検索をマク...
-
VBAで結合セルを転記する法を教...
-
エクセル マクロ 範囲の値を上...
-
エクセル マクロ 範囲指定で...
おすすめ情報