dポイントプレゼントキャンペーン実施中!

Excel VBA 列の表示と非表示について

いつも参考にさせて頂いています。
現在扱っているデータの列が90以上あり、データとしては便利なのですが時に見辛く感じる事があります。
(1).ユーザーフォームからコマンドボタンで一度全ての列を非表示にする。
(2).(1)を行ってからチェックボックスで表示させたい列を表示させる。
といった行程でVBAを組む事は可能でしょうか?
列の表示と非表示について自分なりに調べてみたのですが、消したい列をチェックボックスで消す方法は見つけたのですがそれでは90項目の列の中で5項目だけが必要な場合85回チェックを入れなくてはならなくなり、もう少し効率的な方法があればと考えております。
方法について分かる方は、例をご教示いただけますでしょうか?
宜しくお願いします。

A 回答 (3件)

下記マクロは,列番号1~90までの間で、選択された列(選択したセルでは無いのでお間違え無きように)以外の列を非表示にします。



チェックボックスを利用されるのであれば、 変数SelectCOLに表示させたい列番号、変数iに表示させる列数を指定すれば利用可能ではないでしょうか。

Sub Hidden_col()
Dim c As Range
Dim i, j, k, FLAG As Integer
Dim ColNo As Integer
Dim SelectCOL()

ColNo = 90
ReDim SelectCOL(ColNo)

i = 1
For Each c In Selection.Columns
SelectCOL(i) = c.Column
i = i + 1
Next c

For j = 1 To ColNo
FLAG = 0
For k = 1 To i
If j = SelectCOL(k) Then FLAG = 1: Exit For
Next

If FLAG = 0 Then Columns(j).EntireColumn.Hidden = True
Next

End Sub

この回答への補足

ありがとうございます。
「というのも、非表示にしたまま表示したい列をどのように確認するのかな?と思いまして。
どこかに対照表などがあるのでしょうか・・・」
実は、ユーザーフォームにチェックボックスを90個作りまして各列の表題を付けていました。
とはいえ、各チェックボックスのコードについてはこれからの状態ですが・・・。
これからではありますが、上記コードを参考にしてみたいと思います。

補足日時:2013/04/19 13:06
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2013/04/19 13:06

うーん、一度に入れる、はずすボタンを作れば、(1)の作業は不要な気がするのですが・・・



というのも、非表示にしたまま表示したい列をどのように確認するのかな?と思いまして。
どこかに対照表などがあるのでしょうか・・・
それともチェックボックスに明記されてるのかな。

表示状態のまま、チェックボックスでチェック。
非表示が多い場合は、一旦全部に入れるボタンでチェックを入れた後、表示したいものだけはずす。
もしくは、チェックを逆転できるボタンを作るかですね。

この回答への補足

おぉっ、確かにそうですね!
「チェック=非表示する として
非表示にしたい列が少ない場合⇒表示状態のまま、表示にしたい列のチェックボックスにチェック
非表示にしたい列が多い場合⇒全チェックボックスにチェックするボタンを押す→表示させたい列のチェックボックスにチェック」
という事でしょうか?
因みに各列の表示、非表示設定も含めてコードをご教示頂く事は可能でしょうか?
図々しいお願いではありますが、重ねて是非宜しくお願いします!

補足日時:2013/04/19 11:34
    • good
    • 0

全くの非表示にしてしまう、ということでしょうか・・・


例えばA列からZ列まで一気に非表示ということであれば、
下記コードで実現できます。

Sub Macro1()

Columns("A:Z").Select
Selection.EntireColumn.Hidden = True

End Sub

範囲を変更すれば、お好みの範囲を非表示にできます。

というか、チェックボックスを作るなら、一気にチェックを入れる、はずすボタンを実装する方が
ラクなのでは?

この回答への補足

「というか、チェックボックスを作るなら、一気にチェックを入れる、はずすボタンを実装する方が
ラクなのでは?」
確かにご指摘の通りなんです。
ただし部署によって見たい列の項目が異なる為、マルチに対応が出来つつ、表示にさせたい列だけチェックで表示させる事で作業工程を効率良く出来れば・・・と考えておりました。

補足日時:2013/04/19 10:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!