あなたは何にトキメキますか?

VBA初心者です。

あるBookにsheet1、sheet2、sheet3・・・と複数のシートがあります。
※Bookによってシート数が異なります。
※すべて同じフォームなので列の項目は一緒です。

それぞれのシートのBからC列をエクセルのグループ化のように非表示、表示をさせたいです。

ただ、グループ化では一括で複数シートの特定列を非表示・表示といったことができないことがわかり、いろいろ調べたところVBAでできることがわかったのですが思うようにいきません。。

初心者ながら調べてわかったことは下記なのですが
これを組み合わせてVBA記述をしたのですが、うまくできません。。。

★すべてのシートを選択
Worksheets.Select
★AからCの列を非表示にする
Sub sample()
ActiveSheet.Columns("B:C").Hidden = True
End Sub

アクティブは1つのシートを指し、セレクトは複数選択というようなことはわかったのですが。。
知識不足で行き詰ってしまいました。。。

何卒、ご教授頂ければ幸いです。

A 回答 (2件)

こんにちは!



B・C列を非表示にするのはすべてのSheetでよいのですね?
非表示・再表示のコードの一例です。
標準モジュールにしてください。

Dim k As Long 'この行から//
Sub 非表示()
For k = 1 To Worksheets.Count
Worksheets(k).Columns("B:C").Hidden = True
Next k
End Sub

Sub 再表示()
For k = 1 To Worksheets.Count
Worksheets(k).Columns.Hidden = False
Next k
End Sub 'この行まで//

コードのコメントを拝見すると
>★AからCの列を非表示にする
となっていますが、B・C列としています。m(_ _)m
    • good
    • 2
この回答へのお礼

tom04さま
昨年は大変お世話になりました。
今年もさっそく、ご教授頂きましてありがとうございます。
無事、ご教授頂いたVBAでできました!!
ありがとうございます。

お礼日時:2017/01/13 16:47

こんなのはいかがですか?


---------------------------------------------------------------------
Sub Sample()
Dim ワークシート As Object
For Each ワークシート In Sheets
Columns("B:C").EntireColumn.Hidden = True
Next
End Sub
---------------------------------------------------------------------
    • good
    • 1
この回答へのお礼

さっそく、ご教授ありがとうございます。
私の質問がいけなかったのかもしれませんが
ご教授頂いたVBAですとアクティブなシートのみしか
反映されず、今回は他の方をベストアンサーとさせていただきました。

お礼日時:2017/01/13 16:45

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A