プロが教える店舗&オフィスのセキュリティ対策術

このような質問は、ルール(エチケット、マナー)違反になるでしょうか?
もしそうならお許し下さい。
名前ボックスに表示される名前を、マクロで非表示にし、元に戻す、という操作を次の二つのボタンで実行するように作りました。エクセル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
ど素人ですがよろしくご教導ください。

A 回答 (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
    • good
    • 0
この回答へのお礼

内容を理解するのに時間がかかりお礼がおくれました。
いつもながら適切なご教示感謝します。
ますますのめり込みそうです。

お礼日時:2008/03/27 08:08

思われていることと違っていましたらすみませんが、名前ボックスの表示・非表示は、


数式バーの表示・非表示のことではないのでしょうか。
数式バーを非表示にしたら名前ボックスも無くなり、表示にしたら現われます。

Private Sub CommandButton3_Click()
If Application.DisplayFormulaBar = False Then
Application.DisplayFormulaBar = True
Else
Application.DisplayFormulaBar = False
End If
End Sub
    • good
    • 0
この回答へのお礼

やりたいことはバーそのものを非表示にするものではありませんでしたがこ

れはこれで大変勉強になりました。今後ともよろしくお願いします。

お礼日時:2008/03/27 08:07

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