- ベストアンサー
【Excel】列の自動表示
あるセルに文字列が入ると、非表示にしていた列を表示させることってできるのでしょうか? 例えば、Aシート,Bシートがあり、BシートのG~K列までを非表示としています。 そこで、AシートのC1に文字列を入れると、自動的に、BシートのG~K列までが表示される ということをやりたいのですが、可能でしょうか? アウトライン機能ですとか、VBAでボタンを操作する等、何か操作が入るのではなく、 文字列を入れると、自動的に表示されるようにしたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
補足を読み違えておりました。 No3だとC1が変更されるたびに表示・非表示が切り替わります。 >C1を再び空にしても列は表示されたままなんですね。 (1)C1に何かを入れればG:Kを表示 (2)C1を空にすればG:Kを非表示 ということであれば以下のようにしてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$1" Then Exit Sub With Sheets("Bシート").Columns("G:K").EntireColumn If Target.Value = "" Then .Hidden = True Else .Hidden = False End If End With End Sub 失礼しました。
その他の回答 (3)
- eden3616
- ベストアンサー率65% (267/405)
できますよ。 コードを下記のようにしてください Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$1" Then Exit Sub With Sheets("Bシート").Columns("G:K").EntireColumn If .Hidden Then .Hidden = False Else .Hidden = True End If End With End Sub
- eden3616
- ベストアンサー率65% (267/405)
以下の方法はVBAで行いますが、 ボタンを押すなどの操作は不要で、C1のセル内容が変更されると実行されるようになります。 (以下はアウトラインを用いた非表示ではなく、「G:K」列を選択→「非表示」で非表示にした場合の再表示の方法になります) (1)「Aシート」を右クリック、「コードの表示」を選択 (2)右上のペインに以下のコードを張り付け(添付画像参照) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$1" Then Exit Sub With Sheets("Bシート").Columns("G:K").EntireColumn If .Hidden Then .Hidden = False End With End Sub (3)(2)で開いたVBAを「×」で終了します (4)「Aシート」の「C1」セルに値を入力すると非表示にされていた「Bシート」の「G:K」列が再表示されます ・入力するセルを変更するには2行目の「$C$1」の部分を変更してください ($A$1など絶対参照の形式で入力してください) ・対象のシート名を変更する場合は3行目の「Bシート」の部分を変更してください ・再表示する列範囲を変更する場合は3行目の「G:K」の部分を変更してください (列の再表示のみに対応しており、行の再表示には対応していません)
補足
回答ありがとうございます!! 教えて頂いた方法でうまくいきました! ただ、この方法ですと、C1を再び空にしても列は表示されたままなんですね。 質問では、自動表示だけしか記載していませんでしたが、C1を参照して、表示/非表示を切り替えることはできないでしょうか?
- aokii
- ベストアンサー率23% (5210/22063)
不可能です。
お礼
回答ありがとうございます
お礼
度々のご回答、本当にありがとうございます! やりたかったのは、eden3616様が記載して下さった、 >(1)C1に何かを入れればG:Kを表示 >(2)C1を空にすればG:Kを非表示 というものです。 教えて頂いた方法で上手く行きました! 本当にありがとうございました(*^▽^*)