• 締切済み

Excel2010 ラベルの表示非表示方法

Excel2010 セルの値によって、コントロールラベルを表示非表示にしたいですが、 初心者のため、検索してもよくわからないため教えてください。 例:A1 にリストを置き、ラベルAを選択すればラベルAが表示される ラベルBを選択すればラベルAが非表示になる、ラベルBが表示される。 お願いいたします。   

みんなの回答

回答No.1

こんにちは。 > セルの値によって、コントロールラベルを表示非表示にしたいですが、 "コントロールラベル"という書き方だと、  ラベル(フォーム コントロール)  ラベル(ActiveX コントロール) の区別が付きませんから、こちらの答も2通りになります。 > 例:A1 にリストを置き、ラベルAを選択すればラベルAが表示される > ラベルBを選択すればラベルAが非表示になる、ラベルBが表示される。 "例"に副ってこちらも例でお応えすれば、そちらで応用できる ということでよろしいでしょうか? とりあえず、"A1"というセル参照の部分は適宜書き換えてください。 "A1 にリストを置き"のリストというのも、  フォーム コントロール  ActiveX コントロール  [データの入力規則][リスト] 等、ありますが、なんであれ、リストから選択すると、 A1の値に反映される、という設定になっているという前提でお応えします。 リストの中身が、ラベルを指し示す文字列、であることは解りますが、 "ラベルA"、"ラベルB"というのは、それぞれのラベルの 表示文字列ではなく、ラベルの名前(オブジェクト名)ですよね? "ラベルAを選択すればラベルAが表示される"という場合、 ラベルBを非表示にする、という意図なのだと解釈してお応えしています。 (そうでないと、"ラベルBが表示される"という処理が必要なくなりますから) "A1 にリスト"、"ラベルA"、"ラベルB"が配置されているシート、 のシートタブを右クリックして→[コードの表示]をクリック →表示された Sheetモジュール に 以下の記述のどちらかひとつを選んでコピペします。 後は、実際にA1の値を変更して、動作を確認してください。 ' ' ■■■ラベル(フォーム コントロール)の場合■■■ Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Count > 1 Then Exit Sub   If Target.Address(0, 0) <> "A1" Then Exit Sub ' ◆要指定 "A1" ?   Select Case Target.Value   Case "ラベルA"     Shapes("ラベルA").Visible = True ' ★ラベルのオブジェクト名を正しく指定     Shapes("ラベルB").Visible = False ' ★   Case "ラベルB"     Shapes("ラベルA").Visible = False ' ★     Shapes("ラベルB").Visible = True ' ★   End Select End Sub ' ' ■■■ラベル(ActiveX コントロール)の場合■■■ Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Count > 1 Then Exit Sub   If Target.Address(0, 0) <> "A1" Then Exit Sub ' ◆要指定 "A1" ?   Select Case Target.Value   Case "ラベルA"     ラベルA.Visible = True ' ★ラベルのオブジェクト名を正しく指定     ラベルB.Visible = False ' ★   Case "ラベルB"     ラベルA.Visible = False ' ★     ラベルB.Visible = True ' ★   End Select End Sub

関連するQ&A