- ベストアンサー
エクセル・マクロでIf Thenの使い方
このような質問は、ルール(エチケット、マナー)違反になるでしょうか? もしそうならお許し下さい。 名前ボックスに表示される名前を、マクロで非表示にし、元に戻す、という操作を次の二つのボタンで実行するように作りました。エクセル2003です。 Private Sub CommandButton1_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = False Next End Sub Private Sub CommandButton2_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = True Next End Sub これを一つのボタンで、If Then Elseを使い実行できるようにしたいのですが If ・・・ Then の間の書き方が分からずうまくいきません。 If Names.Visible = False Then If ThisWorkbook.Names.Visible = False Then If ThisWorkbook.tname.Visible = False Then Private Sub CommandButton3_Click() Dim tname As Name If Names.Visible = False Then 'これでは駄目 For Each tname In ThisWorkbook.Names tname.Visible = False Next Else For Each tname In ThisWorkbook.Names tname.Visible = True Next End If End Sub 苦し紛れにこんなことをやってごまかそうとしているのですがこれって邪道ですしかっこうわるいですよね。 Private Sub CommandButton3_Click() Dim tname As Name If Range("g1").Value = " " Then For Each tname In ThisWorkbook.Names tname.Visible = False Next Range("g1").Value = "1" Else For Each tname In ThisWorkbook.Names tname.Visible = True Next Range("g1").Value = " " End If End Sub ど素人ですがよろしくご教導ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 Names は、コレクション名ですから、Visible プロパティは存在しないはずです。 こうすれば、トグルになります。 Private Sub CommandButton1_Click() Dim tName As Name For Each tName In ThisWorkbook.Names tName.Visible = Not tName.Visible Next End Sub Private Sub CommandButton3_Click() >Dim tname As Name >If Range("g1").Value = " " Then ↓ Private Sub CommandButton3_Click() Dim tName As Name Dim flg As Boolean For Each tName In ThisWorkbook.Names tName.Visible = Not tName.Visible flg = Not tName.Visible '最後のフラグで決定 Next CommandButton3.Caption = IIf(flg, "非表示", "表示") End Sub
その他の回答 (1)
- kuma3f
- ベストアンサー率63% (28/44)
思われていることと違っていましたらすみませんが、名前ボックスの表示・非表示は、 数式バーの表示・非表示のことではないのでしょうか。 数式バーを非表示にしたら名前ボックスも無くなり、表示にしたら現われます。 Private Sub CommandButton3_Click() If Application.DisplayFormulaBar = False Then Application.DisplayFormulaBar = True Else Application.DisplayFormulaBar = False End If End Sub
お礼
やりたいことはバーそのものを非表示にするものではありませんでしたがこ れはこれで大変勉強になりました。今後ともよろしくお願いします。
お礼
内容を理解するのに時間がかかりお礼がおくれました。 いつもながら適切なご教示感謝します。 ますますのめり込みそうです。