以下のコードの時、非表示になっているシートのシート名の表示はどうなったか。
実行結果として正しいものを、以下の選択肢より1つ解答しなさい。
Sub Exam1()
Dim i As Long
For i = 1 To Sheets.Count
MsgBox Sheets(i).Name
Next i
End Sub
1.非表示のシートにはインデックス(番号)は割り当てられないので、メッセージにはシート名は表示されなかった。
2.非表示のシートにも表示されているシートと同様に、数値のインデックス(番号)が左からの順序に基づいて割り当てられるのでメッセージにシート名が表示された。
3.非表示のシートには数値のインデックス(番号)ではなく、文字列のIDが割り当てられるのでメッセージにはシート名は表示されなかった。
4.シートが再表示されたときにのみ数値のインデックス(番号)が割り当てられるので、メッセージにはシート名は表示されなかった。
正解
2
解説
【9章 シートとブックの操作】
【非表示のシートのインデックス番号】
●非表示のシートにも表示されているシートと同様に数値のインデックスが左からの順序に基づいて割り当てられます。
表示されているかどうかは関係ありません。
[コード解説]
Sub Exam1()
Dim i As Long
For i = 1 To Sheets.Count
’①繰り返し処理 Sheets.Countで非表示のシートも含めシートの数を数え、シート1枚目インデックス番号「1」を開始値にして、シートの最後の枚数まで繰り返し処理を行う。
MsgBox Sheets(i).Name
’シート名をメッセージで表示する。
Next i
’①へシートの最後の枚数まで戻る。
End Sub
以下のコードの時、非表示になっているシートのシート名の表示はどうなったか。
実行結果として正しいものを、以下の選択肢より1つ解答しなさい。
1.非表示のシートにはインデックス(番号)は割り当てられないので、メッセージにはシート名は表示されなかった。
誤り。
VBAでは、非表示のシートもブック内のシートコレクションの一部として扱われ、左からの順序に基づいて数値のインデックスが割り当てられます。
2.非表示のシートにも表示されているシートと同様に、数値のインデックス(番号)が左からの順序に基づいて割り当てられるのでメッセージにシート名が表示された。
正しい。
非表示のシートにも表示されているシートと同様に数値のインデックスが左からの順序に基づいて割り当てられます。
3.非表示のシートには数値のインデックス(番号)ではなく、文字列のIDが割り当てられるのでメッセージにはシート名は表示されなかった。
誤り。
シートにはシート名(文字列)や内部的なコード名がありますが、位置を示す数値インデックスも存在し、非表示の状態でも割り当てられています。
4.シートが再表示されたときにのみ数値のインデックス(番号)が割り当てられるので、メッセージにはシート名は表示されなかった。
誤り。
シートの数値インデックスは、非表示の状態であるかどうかにかかわらず、ブック内の左からの順序に基づいて常に割り当てられています。