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

ご回答者様

いつもお世話になっております。
VBA ワークシートの非表示の件です。

VBAベーシックの試験対策で下記問題が出てきました。

Sub sample()

Dim i As long
Dim tmp As Long
tmp =worksheets.Count     ここにカウントが入る理由がわからない
For i = 1 to 5
If Worksheets(i).Name = "大阪” Then
Worksheets(i).Visible = False
End if
Next i

End sub


ワークシートの名前が大阪の場合、シートを非表示(Falseなので)にするソースですが
tmp =worksheets.Countに何故Countが入るか分かりません。
(選択肢ではItemもありました。)

お忙しい所恐れ入りますがよろしくお願いいたします。

A 回答 (5件)

>今回はシートが複数あるのでCountを使用しているのでしょうか。


そうです。
これについては、すでに理解されていると思います。
For i = 1 to
If Worksheets(i).Name = "大阪” Then でシート1枚ずつ確認しているので
存在しているシート数を知る必要があります。なので worksheets.Count (コレクションに含まれるオブジェクトの数を表す)

>→具体的にどういう意味でしょうか。
Count、Item は返す型などからも、全く異なるものです。サポートページの式や使い方、例をご覧ください。
    • good
    • 0
この回答へのお礼

お世話になります。
表題の件、かしこまりました。
ありがとうございます。

お礼日時:2019/12/25 18:21

もしかしたら「VBAエキスパート公式テキスト Excel VBA ベーシック(リニューアル試験対応)」の161または162ページの

問題でしょうか?
    • good
    • 0

.Count 、.Item いずれも、この場合、worksheetsのプロパティですね。



.Countは、コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
.Itemはコレクションから単一のオブジェクトを返します。

めぐみん_さんの回答にあるようにループ変数に対して設定するのであれば、.Countプロパティが適切です。

参考になるか分かりませんが、オブジェクトや プロパティについて調べるには、
VBE >表示>オブジェクトブラウザー で オブジェクトの選択を(検索などを)して上の?を押せばインターネットの環境にあれば
Office VBA リファレンスの該当ページがブラウザーでアクセスできます。

直接の場合は、下記の様な手順で
https://docs.microsoft.com/ja-jp/office/vba/api/ …
Office VBA リファレンス >> Excel >> オブジェクトモデル >> worksheetsオブジェクト >> プロパティ

この習慣や学習はスキル向上につながると思います。

一応、画像も付けときます。
「VBA ワークシートの非表示 VBAベー」の回答画像3
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
ご回答頂きありがとうございます。

.Countは、コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
.Itemはコレクションから単一のオブジェクトを返します。
→具体的にどういう意味でしょうか。

今回はシートが複数あるのでCountを使用しているのでしょうか。

参考になるか分かりませんが、オブジェクトや プロパティについて調べるには、
→参考になりますので使用いたします。

引き続き宜しくお願い致します。

お礼日時:2019/12/22 10:34

参考書とかだったらその出版社のHPで正誤表があるか調べてみては?


多分

For i = 1 To tmp

としたかったと思うのですよ。
そのブックに存在しているワークシートがいくつあるかは .Count で調べられます。
一番左を 1 として Worksheets(i) の i が 1 ~ ワークシートの数 までを順にワークシートの名前を調べるコードでしょうから。
    • good
    • 1
この回答へのお礼

いつもお世話になっております。
ご回答頂きありがとうございます。
正誤表に記載はなく・・・・
ただ、確かに5枚を超すと対応不可ですのでFor i = 1 to 5のが正しいですね。
ご回答頂きありがとうございます。

お礼日時:2019/12/22 10:32

>For i = 1 to 5



ワークシートが5枚より少なければ、エラーになる。
5枚より多ければ、”大阪” までたどり着かないかもしれない。
だから、5の代わりにワークシートの枚数を使う。
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
ご回答頂きありがとうございます。
表題の件、めぐみん様がおっしゃる通り5枚よりシートが多ければたどり着きませんね。
Countでシートの枚数を検索していると理解しました。
ありがとうございます。

お礼日時:2019/12/22 10:31

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