2016年6月14日火曜日

【VBA実践】特定の列を一括挿入する。

別の記事で
特定の列を削除する内容をご案内しました。
【VBA実践】特定の列を一括削除する。
今回は作業を行うため、空の列を挿入するコードを記述します。
基本は列を削除する内容とあまり変わりません。
For文を駆使して行っていきます。

サンプル画像
 1から10(AからJ列)までデータが入っており
その各列に空の列を挿入します。

コードは以下の通り。

削除するコードと基本は同じ逆打ちです。
-------------------------------------------------
Sub 特定の列を挿入するコード()

Dim col As Long

For col = 10 To 2 Step -1
    Columns(col).Insert
Next col

End Sub
-------------------------------------------------
1列目までは挿入する必要はないので
カウンタは10 To 2 になります。
また、Stepは-1になります。
処理分は挿入のInsertです。

実行後画面

上手く実行できたことが確認できました。



逆打ちではなく、通常カウントで実行できなくもないのですが
やはりそのやり方はおすすめできません。

試しにサンプル実行してみます。
※Excelのスタート画面は同じレイアウトとします。

コードは以下の通り。

カウント値を逆にしStepは 2とします。

結果は以下の通りです。

上手くいっているように見えますが
よく見てみると、様子が変です。

右方向にスクロールしてみます。

6以降が挿入されていません。

勘のいい方はすぐにお分かりいただけたかと思いますが
カウンタが10となっていることとStep 2となっているところがポイントです。

2列目から挿入されステップで2飛ばしとなって
最後は10で終了しているカウントということは
J列が最後の列になります。
この場合の対応方法は通常の倍のカウント数にしなければいけないということです。

なので、直感的に処理を行うのであれば
やはり前者にご覧いただいた
カウント逆打ちが一番いいですね。

また、データが入っている最終列の値を出すコードを
合わせて組み込み、Forの逆打ちの最初のカウントに代入しておくだけで
後はVBAが勝手に処理してくれます。

コードはただ書くだけではなく
無駄なく処理が実行されることも重要です。

ぜひ活用してみてください。

0 件のコメント:

コメントを投稿