[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートの表示・非表示』(悩める事務員)
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.