【VBA】複数シートの列を削除する

複数シートの列を削除するする時は、For Each(繰り返し処理)で各シートを1つずつ移動しながら、列の削除を行います。

サンプルコードでは、Columnsを使って列削除を行っています。RangeやEntireColumnを使った列削除を行いたい場合は、次の記事を参考にしてください。

【VBA】列を削除する(1列だけ、連続した複数列、離れた複数列)

同じ列を削除する場合

全てのシートで同じ列を削除する場合は、シンプルにシートをFor Eachで移動しながら、対象列を削除します。

コード

1列目をすべてのシートから削除します。

 

解説

サンプルコードでは、繰り返し処理で変数wsにシートが格納されます。

wsには、その時に処理対象となっている1つのシートが格納されています。

繰り返し処理の中で変数wsに格納されているシートの1列目を、Columns(1).Deleteで削除しています。

削除したい列にあわせて、この列番号を修正すれば他の列を削除できます。

 

セルの値を判定して削除する場合

セルの値を判定して一致する列を削除したい場合は、For Eachで各シートを移動しながら、その中でさらに列を1列ずつ調べながら削除します。

この場合は、条件に一致する列が複数ある場合は、一致する列全てが削除されます。

列を1件ずつ調べて削除する時は、後ろの列から削除していきます。理由は次の記事を参考にしてください。

【VBA】条件に一致する列をまとめて削除する

 

コード

すべてのシートの1~100列目の中で、1行目のセルの値が×の列を削除します。

 

解説

サンプルコードでは、繰り返し処理で変数wsにシートが格納されます。

シートの繰り返し処理(For Each)の中で、さらに列を1列ずつ調べる繰り返し処理(For)を行っています。

1列ずつ調べる繰り返し処理では、ws.Cells(1, i).Valueで対象列の1行目の値を調べ、×の場合に列を削除しています。

列削除の基本や、その他の応用テクニックは下の記事を見てください。

【VBA】列を削除する(1列だけ、連続した複数列、離れた複数列)

 

関連記事

VBAテクニック辞典
成果を出す5つのポイント
VBAテクニック辞典
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました