• 締切済み

エクセルVBA・空白セルのある列を非表示にするには?

エクセルのVBAについてです! 表で上から2行目(G2:CX2)に空欄があった場合、その列を非表示にする、 というマクロを組みたくて、以下のように書いてみました。 一応、ちゃんと動くのですが、止まる(結果が出る)までにやたらと時間がかかり、これでは使えません。。 本を見ながら何となく書いたので、自身では詳しくわかりません。 どこ(何)がおかしくて、どう書き換えたらよいか、お分かりになる方、ぜひ教えてください! よろしくお願い致します。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub 空欄のある列を非表示にする() Dim cl As Range Range("G2:CX2").SpecialCells(xlCellTypeBlanks).Select For Each cl In Selection r = cl.Column 'MsgBox r Columns(r).EntireColumn.Hidden = True Next End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

みんなの回答

  • WDY
  • ベストアンサー率27% (134/488)
回答No.1

1行ずつ確認、非表示とすると画面描画が変わってから次の処理になる為かなり遅いです。 非表示にしたい列名を複数選択してから非表示にする処理にするとかなり速度が変わると思います。 追伸 >本を見ながら何となく書いたので、自身では詳しくわかりません。 >どこ(何)がおかしくて、どう書き換えたらよいか、お分かりになる方、ぜひ教えてください! 勉強の為に作成されたのであればじっくり調べて覚える事をお勧めします。 サンプルコードを書く事も出来ますが、分からないまま使用すると 自分の意図しない動きに対応出来ません。 頑張って下さい。

mogu0406
質問者

補足

回答いただきありがとうございます。 誤解される文章だったようですみません。 本件、仕事で使用する為に作成しております。(合わせて勉強中です) 本で調べながら、あれこれと試行錯誤した結果動いた、という感じで これでいいのか?と思い、詳しくわからないと書きました。 >非表示にしたい列名を複数選択してから非表示にする処理にするとかなり速度が変わると思います。 そのとおりだと思います。しかし、空欄となるセルは固定されないという前提のため 列名を指定しての複数選択ができないのではと考えています。 全部自分で調べて理解できれば一番よいことは、十分承知しておりますが 必要に迫られている状況でもあり、正しいコードを参考に勉強もしたいのです。 よろしければサンプルコードを教えていただけないでしょうか? どうぞよろしくお願い致します。

関連するQ&A