Access VBA ベーシック 模擬問題 模擬試験

Access VBA ベーシック 模擬問題 ② 第11問 4章

以下のコードを実行した際の結果と、Withステートメントに関する説明として最も適切なものはどれか。

以下の選択肢より1つ解答しなさい。

ただし、プロジェクト内に「Module1」というモジュールが存在するものとする。

 

Sub Exam1()

 With Modules("Module1")

  MsgBox "モジュール名: " & .Name

  MsgBox "行数: " & .CountOfLines

 End With

End Sub

 

1.コードは正常に実行され、メッセージボックスが2回表示される。このステートメントは、同じオブジェクトに対する処理でオブジェクト名を省略し、可読性を高める。

2.コードは正常に実行されるが、メッセージボックスは1回しか表示されない。Withステートメントは、最初の処理のみに適用されるためである。

3.コンパイルエラーが発生する。これはWithステートメント内でプロパティ名の前にピリオド(.)がないためである。

4.コードは正常に実行されるが、一つのWithステートメントで複数の異なるオブジェクトを指定できるため、例えばModules("Module1")とModules("Module2")を同時に指定することも可能である。

 

正解

1

解説

【4章 ステートメント】

【With…End With ステートメント】

With ステートメントは、指定のオブジェクトを省略しまとめた記述にして、可読性上げるために使用されます。

With. 省略する対象からEnd Withまでは
語句の最初に「.」とついている場合はVBAでは「省略する対象」を指定しているとみなされます。

構文
With. 省略する対象

「.」から始まる語句

End With・・・ここが省略した記述の終了行です。

End Withまで省略して記述されていることと同じと扱われます。

 

【コード解説】

以下のコードを実行した際の結果と、Withステートメントに関する説明として最も適切なものはどれか。

以下の選択肢より1つ解答しなさい。

ただし、プロジェクト内に「Module1」というモジュールが存在するものとする。

 

Sub Exam1()

 With Modules("Module1")

’Withステートメントでモジュール名「Module1」を省略する。

  MsgBox "モジュール名: " & .Name

’Nameプロパティでモジュール名を取得しメッセージで表示します。

  MsgBox "行数: " & .CountOfLines

’CountOfLinesプロパティで行数を取得しメッセージで表示します。

 End With

’省略を終了する。

End Sub

Access VBA basicステートメント Access VBA basicステートメント

 

1.コードは正常に実行され、メッセージボックスが2回表示される。このステートメントは、同じオブジェクトに対する処理でオブジェクト名を省略し、可読性を高める。

正しい。

Withステートメントは、同じオブジェクトが繰り返し出てくるコードにおいて、オブジェクト名を省略して記述できるようにするものです。

これにより、コードの可読性が向上し、オブジェクトへの参照回数が減ることで実行速度も向上します。

 

2.コードは正常に実行されるが、メッセージボックスは1回しか表示されない。Withステートメントは、最初の処理のみに適用されるためである。

誤り。

Withブロック内の全ての処理に対して、指定したオブジェクトが適用されます。このコードでは2つのMsgBoxが実行されます。

 

3.コンパイルエラーが発生する。これはWithステートメント内でプロパティ名の前にピリオド(.)がないためである。

誤り。

Withステートメント内でオブジェクト名を省略して記述する場合、そのオブジェクトのプロパティやメソッドの前にピリオド(.)を付ける必要がありますが、示されたコードでは正しくピリオドが使用されています。

 

4.コードは正常に実行されるが、一つのWithステートメントで複数の異なるオブジェクトを指定できるため、例えばModules("Module1")とModules("Module2")を同時に指定することも可能である。

誤り。

Withステートメントで指定できるオブジェクトは一つだけです。複数のオブジェクトを一つのWithステートメントで指定することはできません 。