
教えて下さい。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 文字列から電話番号...
-
vba マージエリアの行数を非表...
-
Excelの行数、列数を増やしたい...
-
「段」と「行」の違いがよくわ...
-
エクセルマクロPrivate Subを複...
-
<急募>エクセルデータの関数を...
-
マクロについて教えてください。
-
csvに別のExcelの文章を差し込む
-
VBA 2つのシートのデータ転記
-
Excel VBA マクロで複数列が共...
-
A列のセルを参照して、B列の文...
-
VBA 列の削除を何回か繰り返す...
-
Excelマクロ 複数のブック内の...
-
゙逆゙ のやつってどうすれば ゙順...
-
VBA 削除の速度について
-
EXCEL2019のLEN関数
-
ご覧いただきありがとうござい...
-
【エクセル数式】複数行に渡る...
-
【Excelマクロ】複数列にまたが...
-
二つの数列に在る同じ数字を抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
vba マージエリアの行数を非表...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセル マクロ 範囲指定で...
-
エクセルのソートで、数字より...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
横軸を日付・時間とするグラフ化
-
VBAで別ブックの列を検索し、該...
-
Excel文字列一括変換
-
csvデータの列の入れ替えができ...
-
最近急にVBAの処理速度が遅くな...
-
データシートビューのタイトル...
-
エクセルマクロPrivate Subを複...
-
CSVファイルの「0落ち」にVBA
おすすめ情報