Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1866 / 13645 ツリー ←次へ | 前へ→

【71405】表示されているシートの数 takuma 12/2/29(水) 18:27 質問[未読]
【71406】Re:表示されているシートの数 kanabun 12/2/29(水) 18:40 発言[未読]
【71407】Re:表示されているシートの数 takuma 12/2/29(水) 19:35 質問[未読]
【71408】Re:表示されているシートの数 kanabun 12/2/29(水) 20:01 発言[未読]
【71410】Re:表示されているシートの数 ichinose 12/2/29(水) 20:29 発言[未読]
【71409】Re:表示されているシートの数 takuma 12/2/29(水) 20:02 お礼[未読]

【71405】表示されているシートの数
質問  takuma  - 12/2/29(水) 18:27 -

引用なし
パスワード
   はじめまして。
過去ログを見ても判らなかったので、新規に質問させて頂きます。
excelのワークシート数をメッセージボックスで表示するには
 Sub CountSamp1()
  MsgBox "ワークシート枚数:" & ActiveWorkbook.Worksheets.Count
 End Sub
で出来ますが、表示されているワークシート数は表示することが出来ないのでしょうか。
皆様のお知恵を拝借させて下さい。
よろしくお願い致します。

【71406】Re:表示されているシートの数
発言  kanabun  - 12/2/29(水) 18:40 -

引用なし
パスワード
   ▼takuma さん:
表示ワークシート数を返すプロパティはなさそうなので、
地道に Loopしてカウントしてみました。

Sub test1()
 Dim ws As Worksheet
 Dim n&
 With ActiveWorkbook
   For Each ws In .Worksheets
     n = n - (ws.Visible)
   Next
   MsgBox "表示ワークシートは " & n & " 枚あります", _
       , "全ワークシート" & .Worksheets.Count & "枚中"
 End With
End Sub

【71407】Re:表示されているシートの数
質問  takuma  - 12/2/29(水) 19:35 -

引用なし
パスワード
   ▼kanabun さん:
早速のご回答ありがとうございます。
お教え頂いたVBAを実行すると全ワークシート数が表示されなかったので下記のように変更しました。
 Sub test2()
  Dim ws As Worksheet
  Dim n&
  With ActiveWorkbook
    For Each ws In .Worksheets
      n = n - (ws.Visible)
     Next
    MsgBox "表示ワークシートは " & n & " 枚あります" & Chr(13) & Chr(10) _
       & "全ワークシート" & .Worksheets.Count & "枚中"
  End With
 End Sub

しかし、全シート表示している場合は正しく表示されますが、非表示シートがある場合は表示ワークシート数が正しく表示されません。
全ワークシート数が10の状態で、
 1.表示シート数が10の場合・・・表示シート数は 10枚あります
 2.表示シート数が 1の場合・・・表示シート数は-17枚あります
 3.表示シート数が 2の場合・・・表示シート数は-14枚あります
 4.表示シート数が 3の場合・・・表示シート数は-11枚あります
 5.表示シート数が 4の場合・・・表示シート数は -8枚あります
 6.表示シート数が 5の場合・・・表示シート数は -5枚あります
 7.表示シート数が 6の場合・・・表示シート数は -2枚あります
 8.表示シート数が 7の場合・・・表示シート数は 1枚あります
 9.表示シート数が 8の場合・・・表示シート数は 4枚あります
10.表示シート数が 9の場合・・・表示シート数は 7枚あります
と表示されてしまいます。
WINDOWS7でEXCELl2007を使用していますが、OS・EXCELのバージョンが影響しているのでしょうか。
お手数ですが、引き続き御教授願います。

【71408】Re:表示されているシートの数
発言  kanabun  - 12/2/29(水) 20:01 -

引用なし
パスワード
   ▼takuma さん:

>お教え頂いたVBAを実行すると全ワークシート数が表示されなかったので

>しかし、全シート表示している場合は正しく表示されますが、非表示シートがある場合は表示ワークシート数が正しく表示されません。

>WINDOWS7でEXCELl2007を使用していますが、OS・EXCELのバージョンが影響しているのでしょうか。

おかしいですね??
Windows 7 の Excel2007 で ↓をやってみましたが、
>> Sub test1()
>>  Dim ws As Worksheet
>>  Dim n&
>>  With ActiveWorkbook
>>    For Each ws In .Worksheets
>>      n = n - (ws.Visible)
>>    Next
>>    MsgBox "表示ワークシートは " & n & " 枚あります", _
>>        , "全ワークシート" & .Worksheets.Count & "枚中"
>>  End With
>> End Sub
正しく表示されましたよ。
>>    MsgBox "表示ワークシートは " & n & " 枚あります", _
>>        , "全ワークシート" & .Worksheets.Count & "枚中"
の「全ワークシート数」のところは 「タイトル」バーに表示されます。


>>    For Each ws In .Worksheets
>>      n = n - (ws.Visible)
>>    Next
の (ws.Visible) は
  wsが表示されているとき -1
  ws が非表示の時 0
となりますから、 表示されているワークシートの枚数をカウント
するはずなんですが...

【71409】Re:表示されているシートの数
お礼  takuma  - 12/2/29(水) 20:02 -

引用なし
パスワード
   ▼kanabun さん:
(ws.Visible)を(ws.Visible = xlSheetVisible)に修正したらどのパターンでも正確に表示されるようになりました。
ありがとうございました。

【71410】Re:表示されているシートの数
発言  ichinose  - 12/2/29(水) 20:29 -

引用なし
パスワード
   こんばんは。

>の (ws.Visible) は
>  wsが表示されているとき -1
>  ws が非表示の時 0
>となりますから、 表示されているワークシートの枚数をカウント
>するはずなんですが...

Excel側からもXlsheetVeryHiddenという指定が出来るなら、
これも考慮したコードにした方が良いのではないですか?

1866 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free