
Excel VBA 列の表示と非表示について
いつも参考にさせて頂いています。
現在扱っているデータの列が90以上あり、データとしては便利なのですが時に見辛く感じる事があります。
(1).ユーザーフォームからコマンドボタンで一度全ての列を非表示にする。
(2).(1)を行ってからチェックボックスで表示させたい列を表示させる。
といった行程でVBAを組む事は可能でしょうか?
列の表示と非表示について自分なりに調べてみたのですが、消したい列をチェックボックスで消す方法は見つけたのですがそれでは90項目の列の中で5項目だけが必要な場合85回チェックを入れなくてはならなくなり、もう少し効率的な方法があればと考えております。
方法について分かる方は、例をご教示いただけますでしょうか?
宜しくお願いします。
No.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個作りまして各列の表題を付けていました。
とはいえ、各チェックボックスのコードについてはこれからの状態ですが・・・。
これからではありますが、上記コードを参考にしてみたいと思います。
No.2
- 回答日時:
うーん、一度に入れる、はずすボタンを作れば、(1)の作業は不要な気がするのですが・・・
というのも、非表示にしたまま表示したい列をどのように確認するのかな?と思いまして。
どこかに対照表などがあるのでしょうか・・・
それともチェックボックスに明記されてるのかな。
表示状態のまま、チェックボックスでチェック。
非表示が多い場合は、一旦全部に入れるボタンでチェックを入れた後、表示したいものだけはずす。
もしくは、チェックを逆転できるボタンを作るかですね。
この回答への補足
おぉっ、確かにそうですね!
「チェック=非表示する として
非表示にしたい列が少ない場合⇒表示状態のまま、表示にしたい列のチェックボックスにチェック
非表示にしたい列が多い場合⇒全チェックボックスにチェックするボタンを押す→表示させたい列のチェックボックスにチェック」
という事でしょうか?
因みに各列の表示、非表示設定も含めてコードをご教示頂く事は可能でしょうか?
図々しいお願いではありますが、重ねて是非宜しくお願いします!
No.1
- 回答日時:
全くの非表示にしてしまう、ということでしょうか・・・
例えばA列からZ列まで一気に非表示ということであれば、
下記コードで実現できます。
Sub Macro1()
Columns("A:Z").Select
Selection.EntireColumn.Hidden = True
End Sub
範囲を変更すれば、お好みの範囲を非表示にできます。
というか、チェックボックスを作るなら、一気にチェックを入れる、はずすボタンを実装する方が
ラクなのでは?
この回答への補足
「というか、チェックボックスを作るなら、一気にチェックを入れる、はずすボタンを実装する方が
ラクなのでは?」
確かにご指摘の通りなんです。
ただし部署によって見たい列の項目が異なる為、マルチに対応が出来つつ、表示にさせたい列だけチェックで表示させる事で作業工程を効率良く出来れば・・・と考えておりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
rowsとcolsの意味
-
VBAのFind関数で結合セルを検索...
-
【Excel VBA】カンマと改行コー...
-
VBマクロ 色の付いたセルを...
-
Cellsのかっこの中はどっちが行...
-
VBA: 2列のリストボックスの2列...
-
Excel VBA_2000ハイパーリンク...
-
複数の列の値を結合して別の列...
-
【VBA】2つのシートの値を比較...
-
VBScriptでfindを使うには??
-
グリッドの列の最大値を求めたい。
-
4月~3月まで12カ月横に並んだ...
-
文字列の結合を空白行まで実行
-
エクセルVBA intersect colu...
-
VBAリストボックスへの複数列の...
-
エクセル 2つの表の並べ替え
-
IIF関数の使い方
-
エクセル VBA ユーザーフォー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA sum ワークシートChange
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
URLのリンク切れをマクロを使っ...
-
【VBA】2つのシートの値を比較...
-
rowsとcolsの意味
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
B列の最終行までA列をオート...
-
VBAでのリスト不一致抽出について
-
複数の列の値を結合して別の列...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
エクセル 2つの表の並べ替え
-
DataGridViewに空白がある場合...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】複数行あるカンマ区切り...
-
ExcelVBAでテキストルーレット...
おすすめ情報