ここから本文です

エクセルで質問です。 リストボックスでAからJの10パターンを選択できるようにし...

dom********さん

2013/8/2311:00:47

エクセルで質問です。
リストボックスでAからJの10パターンを選択できるようにしたいと考えています。

パターンとして;
Aを選択した場合には、列の11から15までを表示しない。
Bを選択した場合には、列の16から21までを

表示しない。
CからJまでは、どれを選択しても、列の11から21までを表示しない。

という形にしたいです。
フィルターを使わず、リストボックスでアルファベットを選択したら自動的にこのようになるようにしたいのです。

どうかご教示ください。

閲覧数:
257
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ja7********さん

編集あり2013/8/2411:06:24

こんな感じで如何でしょうか。

ActiveX のListBoxとして・・・
使用しているシートのモジュールに記述します。
(シート名タブを右クリックして「コード」の表示を指定し、表示された
  コードウィンドウに下記コードを貼り付けます。)
コントロール名(今は ListBox1 ) (2ヶ所)を実情に合わせます。

Private Sub ListBox1_Change()
With ActiveSheet
    .Range("K:U").EntireColumn.Hidden = False
    Select Case .ListBox1.Value
        Case "A"
            .Range("K:O").EntireColumn.Hidden = True
        Case "B"
            .Range("P:U").EntireColumn.Hidden = True
        Case "C" To "J"
            .Range("K:U").EntireColumn.Hidden = True
    End Select
End With
End Sub


'-----------------
◎ シート上配置した フォームのコントロールの場合は、こんな感じです。

リストボックスのリストが、上から順に "A" ~"J" になっているとします。

・ 標準モジュールに下記コードを貼り付けます。
・ シート上のListBoxコントロールを右クリックして「マクロの登録」で
  「列非表示」を指定し、[OK]します。

Sub 列非表示()
With ActiveSheet
    .Range("K:U").EntireColumn.Hidden = False
    Select Case .Shapes(Application.Caller).DrawingObject.Value
        Case 1
            .Range("K:O").EntireColumn.Hidden = True
        Case 2
            .Range("P:U").EntireColumn.Hidden = True
        Case 3 To 10
            .Range("K:U").EntireColumn.Hidden = True
    End Select
End With
End Sub

'---
なお、 リストボックスのリストをどのような方法で設定しているのか
判りませんので ここでは、拘わっていませんが・・・
「入力規則」の「リスト」を使った方が、いいような感じですが、如何でしょうか。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

hel********さん

2013/8/2312:40:04

リストボックスがユーザーフォームなのか、フォームのリストボックスなのかわかりませんので、フォームのリストボックスとして見ます。
リスト表示はされていることを前提にし、リストボックスのリンクセルはB2のセルとします。

Sub リスト1_Change()
Dim i As Long

Select Case Range("B2").Value
Case 1
Range(Columns(11), Columns(21)).Hidden = False
Range(Columns(11), Columns(15)).Hidden = True
Case 2
Range(Columns(11), Columns(21)).Hidden = False
Range(Columns(16), Columns(21)).Hidden = True
Case 3 To 10
Range(Columns(11), Columns(21)).Hidden = False
Range(Columns(11), Columns(21)).Hidden = True
Case Else
Range(Columns(11), Columns(21)).Hidden = False
Exit Sub
End Select

End Sub

ユーザフォームであれば、Select Case ListIndexにして、Caseを0、1、2 To 9 に置き換えてください。
※Private Sub ListBox1_Change()に記載です。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる