[[20120511111830]] 『シートの表示・非表示』(悩める事務員) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートの表示・非表示』(悩める事務員)
いつもお世話になります。
今日も一つお願いします。
シートの表示・非表示でxlSheetVeryHiddenですと動きません。
動くようにする方法を教えてください。
Sub 表示切替()

    If Sheets("期限").Visible Then
        Sheets("期限").Visible = xlSheetVeryHidden
    Else
        Sheets("期限").Visible = True
    End If

End Sub


 >シートの表示・非表示でxlSheetVeryHiddenですと動きません。

 動きませんという意味は?
 非表示にならないということ?
 それとも、なにかエラーメッセージがでるということ?
(たとえばシートが1枚しかない状態で、そのシートを非表示にすることはできない)

 あと、理由があって(ユーザー操作からは表示に戻したくないとか)xlSheetVeryHidden を使っているのではなければ

 もし既に、期限シートが xlSheetVeryHidden になっていればいったん、

 Sub Test()
    Sheets("期限").Visible = xlSheetVisible
 End Sub

 で表示にした上で(もし、xlSheetVeryHidden になっていなければ上記は不要)

 Sub Sample()
    Sheets("期限").Visible = Not Sheets("期限").Visible
 End Sub

 これで非表示->表示 -> 非表示 -> 表示 => ・・・ とかわっていくよ。

 (ぶらっと)

 ぶらっとさん、ご返事ありがとう御座います。
 Worksheets("期限").Visible = xlSheetVeryHidden で完全に隠す
 Sheets("期限").Visible = True は表示する、ですね。
 この二つを組み合わせて作ってみたコードなのですが、非表示になったまま表示できなくて尋ねました。
 (悩める事務員) 

 xlSheetVeryHidden は False(0) ではないのでこれも True と同じと判断されます。
 Visible のとる値は
  xlSheetVisible    -1
  xlSheetHidden      0
  xlSheetVeryHidden  2
 ですから、省略しないできちんとステータスと比較してはどうでしょうか。
 (Mook)

 Mookさんからお答えがでているけど、If は True か?という判定ではなく Falseじゃないか?という判定をしているようだね。

 なので、(かつ、xlSheetVeryHidden を使うことに意味があるということなので)

    If Not Sheets("期限").Visible Then
        Sheets("期限").Visible = True
    Else
        Sheets("期限").Visible = xlSheetVeryHidden
    End If

 こうすれば、意図した動きになるかな?

 (ぶらっと)

 ぶらっとさん、Not が足りなかったのですね。
 思うように動きました。本当にありがとうございました。
 (悩める事務員) 

 補足だよ。
 論理値(True、False)が来るところに数値が来たら0をFalseに、0以外をTreuと判断するよ。
 CBoolで数値を論理値に変換してみたらはっきりするよ。
 (春日野馨)

 春日野さんやぶらっとさんの言われることを理解したうえで、上記のように書くのであれば
 それでも良いですが、私としてのお勧めは下記のような記述です。

 With Sheets("期限")
    If .Visible <> xlSheetVisible Then
        .Visible = xlSheetVisible 
    Else
        .Visible = xlSheetVeryHidden
    End If
 End With
 これであれば、論理値を気にしなくても、ステータスとして考えることが出来るので。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.