【カテゴリー別】Access VBA スタンダード 模擬問題 プロシージャ モジュール Access VBA スタンダード 模擬問題 模擬問題 2026.08.07 こちらはカテゴリー別の模擬問題です。 合計29問がシステムに登録した順番どおりに1問1答形式で出題されます。 なおタイマー機能はありません。 準備が整い次第、ボタンを押して試験を開始してください。 1. プロシージャの種類に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 標準プロシージャは、特定のオブジェクトで起きたイベントをきっかけに自動で実行される。 汎用的な処理を記述する標準プロシージャには、値を返さないSubプロシージャと、値を返すFunctionプロシージャの2種類がある。 イベントプロシージャは、プロシージャ名や引数を作成者が任意に決められる。 イベントプロシージャは、SubプロシージャとFunctionプロシージャのどちらでも作成できる。 None 2. プロシージャから別のプロシージャを呼び出して処理をまとめることの利点(メリット)として、選択肢の中から適切なものを1つ解答しなさい。 処理を共通化しても、内容を変更するときは結局すべての記述箇所を個別に直す必要がある。 同じ処理を複数のプロシージャにそれぞれ書くほうが、全体のコード量を減らせる。 共通する処理をユーザー作成の関数としてまとめ、どのプロシージャからでも何度でも呼び出せるため、開発の手間が減り、修正も1か所で済むのでメンテナンスが容易になる。 プロシージャを分けて呼び出すようにすると、必ずプログラムの実行速度が向上する。 None 3. プロシージャの呼び出しに関する説明として、選択肢の中から適切なものを1つ解答しなさい。 Subプロシージャを呼び出すCallステートメントは省略できず、呼び出しでは必ず記述しなければならない。 Subプロシージャは戻り値を使わないためCallで呼び出し、Functionプロシージャは戻り値を変数などに代入する形で呼び出す。 他のプロシージャから呼び出される側のプロシージャを「親プロシージャ」と呼ぶ。 Callを省略してSubプロシージャを呼び出すときは、引数をカッコで囲む必要がある。 None 4. 次の「Exam1」プロシージャを実行したとき、メッセージボックスに表示される値として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。Sub Exam1() Dim N As Long N = 12 Call Exam2(N) N = N * 5 Call Exam2(N) MsgBox NEnd SubSub Exam2(N As Long) N = N / 3End Sub 7 20 4 12 None 5. 次の「Exam1」プロシージャを実行したとき、イミディエイトウィンドウに出力される内容として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。Sub Exam1() Dim MeStr As String MeStr = Fun1("VBA") Debug.Print MeStr MeStr = Fun2() Debug.Print MeStr MsgBox "完了"End SubFunction Fun1(MeStr As String) As String Fun1 = MeStr & "を小文字にすると" & LCase(MeStr) & "です。"End FunctionFunction Fun2() As String Fun2 = "Fun2"End Function 1行目:VBAを小文字にするとvbaです。/2行目:Fun2 1行目:Fun2/2行目:VBAを小文字にするとvbaです。 1行目:VBAの文字数は3文字です。/2行目:Fun2 1行目:VBAを小文字にするとVBAです。/2行目:Fun2 None 6. プロシージャの引数と戻り値に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 戻り値は、SubプロシージャとFunctionプロシージャのどちらからでも返せる。 引数はSubプロシージャとFunctionプロシージャのどちらにも渡せるが、戻り値を返せるのはFunctionプロシージャだけである。また戻り値は、変数に代入するだけでなく、オブジェクトのプロパティへの代入やメソッドの引数としても利用できる。 引数はFunctionプロシージャにしか渡せず、Subプロシージャには渡せない。 引数は必ず1つ以上設定しなければならず、省略することはできない。 None 7. 呼び出し先のプロシージャにおける引数と戻り値の設定、および戻り値の利用に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 引数のデータ型を省略すると、その引数は文字列型として処理される。 引数が必要ない場合は引数を省略でき、引数のデータ型を省略した場合はバリアント型として処理される。 複数の引数を渡すときは、引数の数さえ合っていれば、順番やデータ型は呼び出し先と一致していなくてもよい。 戻り値を返すには、Functionプロシージャの引数に戻り値を代入する。 None 8. 次の「Exam1」プロシージャを実行したとき、イミディエイトウィンドウに出力される内容として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。Sub Exam1() Debug.Print Fun1("VBA", 3) MsgBox "完了"End SubFunction Fun1(MeStr As String, MeLng As Long) As String Dim i As Long Dim N As String For i = 1 To MeLng N = N & MeStr Next i Fun1 = NEnd Function VBA が縦に3行出力される(1行目:VBA/2行目:VBA/3行目:VBA) 繰り返し回数の 3 が出力される。 VBAVBAVBA と、改行されずに1行で出力される。 VBA が1行だけ出力される。 None 9. 次の「Fun1」プロシージャは、 文字列と整数を受け取り、変数Nに文字列を繰り返し連結してから戻り値に代入する前提のコードであるが、このコードを、変数Nを使わずにプロシージャ名を変数の代わりに使う形へ書き換えたとき、【 ① 】に入る記述として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。【変数Nを使う元のコード】Function Fun1(MeStr As String, MeLng As Long) As String Dim i As Long Dim N As String For i = 1 To MeLng N = N & MeStr Next i Fun1 = NEnd Function【変数Nを使わない書き換え後のコード】Function Fun1(MeStr As String, MeLng As Long) As String Dim i As Long For i = 1 To MeLng 【 ① 】 Next iEnd Function N = N & MeStr MeStr = MeStr & Fun1 Fun1 = MeStr & MeLng Fun1 = Fun1 & MeStr None 10. 名前付き引数に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 「引数名 := 値」の形式で指定し、呼び出し先で実際に設定されている引数名を使う。この方法では、引数を定義の順番どおりに記述する必要はない。 名前付き引数を使う場合も、引数は必ず呼び出し先の定義と同じ順番で記述しなければならない。 名前付き引数には、呼び出し元で自由に付けた任意の名前を使う。 「引数名 = 値」の形式で指定する。 None 11. 変数を引数として渡すときの値渡しと参照渡しに関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 呼び出し先の引数にByValを指定すると値渡し、ByRefを指定すると参照渡しになり、どちらも省略した場合は参照渡しになる。また、渡す変数名と受け取る側の引数名は同じである必要はない。 ByValとByRefのどちらも省略した場合は、値渡しになる。 引数として渡す変数名と、受け取る側の引数名は、必ず同じ名前にしなければならない。 値渡しは変数をそのまま渡すため、呼び出し先での変更が呼び出し元の変数にも反映される。 None 12. 次のコードは、Exam2に2つの引数を渡し、1つ目のN1は呼び出し元の変数に影響を与えない値渡し、2つ目のN2は呼び出し先での変更が呼び出し元にも反映される参照渡しにするものである。以下の空欄に入る適切な語句を解答しなさい。Sub Exam1() Dim N1 As String Dim N2 As String N1 = "vba" N2 = "sql" Call Exam2(N1, N2) Debug.Print N1 Debug.Print N2 MsgBox "完了"End SubSub Exam2( N1 As String, N2 As String) N1 = StrConv(N1, vbUpperCase) N2 = StrConv(N2, vbUpperCase)End Sub 13. 次のコードは、Exam2の1つ目の引数N1を参照渡し、2つ目の引数N2を値渡しにし、Format関数で数値をカンマ区切りに整形するものである。以下の空欄に入る適切な語句を解答しなさい。実行後、Debug.Printによって1行目に 、2行目に が出力される。Sub Exam1() Dim N1 As String Dim N2 As String N1 = "1000" N2 = "2000" Call Exam2(N1, N2) Debug.Print N1 Debug.Print N2 MsgBox "完了"End SubSub Exam2(ByRef N1 As String, ByVal N2 As String) N1 = Format(N1, "#,##0") N2 = Format(N2, "#,##0")End Sub 14. 次のコードは、引数を省略して呼び出せるようにし、省略された場合は指定した初期値を使うものである。1回目は引数「VBA」を渡して呼び出し、2回目は引数を省略して呼び出している。空欄に入る適切な語句を解答しなさい。Sub Exam1() Debug.Print Fun1() Debug.Print Fun1("VBA") MsgBox "完了"End SubFunction Fun1( MeStr As String = "SQL") As String Fun1 = MeStr & "!"End Function 15. 次の「Exam1」プロシージャを実行したとき、イミディエイトウィンドウに出力される内容について選択肢の中から適切なものを1つ解答しなさい。Sub Exam1() Debug.Print Fun1() Debug.Print Fun1("vba") MsgBox "完了"End SubFunction Fun1(Optional MeStr As String = "sql") As String Fun1 = StrConv(MeStr, vbUpperCase)End Function 1行目:VBA 2行目:SQL 1行目:SQL 2行目:VBA 1行目:SQL 2行目:SQL 1行目:sql 2行目:vba None 16. 次の「Exam1」プロシージャを実行したとき、イミディエイトウィンドウに出力される内容について選択肢の中から適切なものを1つ解答しなさい。Sub Exam1() Dim N(2) As String Dim i As Long For i = 0 To 2 N(i) = "VBA" & (i + 1) Next i Call Exam2(N) MsgBox "完了"End SubSub Exam2(ByRef N() As String) Dim j As Variant For Each j In N Debug.Print j Next j End Sub VBA0/VBA1/VBA2 が縦に3行出力される。 VBA1 が1行だけ出力される。 配列は値渡しできないためエラーになり、何も出力されない。 VBA1/VBA2/VBA3 が縦に3行出力される。 None 17. 次のコードは、配列の中身を値渡しするために、バリアント型変数NVに配列Nを格納してからExam2に渡し、呼び出し先で内容を確認(出力)するものである。空欄に入る記述の組み合わせとして適切ものを1つ選びなさい。Sub Exam1() Dim N(2) As String Dim NV As Variant Dim i As Long For i = 0 To 2 N(i) = "VBA" & (i + 1) Next i 【 ① 】 Call Exam2(NV) MsgBox "完了"End SubSub Exam2(【 ➁ 】) Dim j As Variant For Each j In NV Debug.Print j Next j End Sub ①−NV = N ②−ByVal NV As Variant ①−N = NV ②−ByVal NV As Variant ①−NV = N ②−ByRef NV As Variant ①−NV = N ②−ByVal NV As String None 18. 配列やユーザー定義型の変数を引数として渡すことに関する説明として、適切なものを1つ選びなさい。 配列変数やユーザー定義型の変数は、中身をそのまま引数として渡すことができ、その渡し方は必ず参照渡しになる。 配列変数やユーザー定義型の変数を引数として渡すときは、ByValを指定して値渡しにすることができる。 引数として渡せる配列は一次元配列だけで、多次元配列は渡すことができない。 静的配列は引数として渡せるが、動的配列は引数として渡すことができない。 None 19. ユーザー定義型(Type MeType … End Type で定義した型)の変数を引数として渡すことに関する説明について選択肢の中から適切なものを1つ解答しなさい。 ユーザー定義型の変数を値渡しにするときは、変数をそのまま1回で渡せばよい。 ユーザー定義型の変数は中身をそのまま引数として渡せるが、渡し方は必ず参照渡しになる。値渡しにしたいときは、変数の要素を1つずつ引数として渡す必要がある。 ユーザー定義型の変数は、引数として渡すことができない。 ユーザー定義型の変数を引数として渡すときは、ByValを指定して値渡しにすることができる。 None 20. 次の「Exam1」プロシージャを実行したとき、イミディエイトウィンドウに出力される内容について選択肢の中から適切なものを1つ解答しなさい。宣言セクションType MeType N As String M As Long D As DateEnd TypeーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーSub Exam1() Dim MeRec As MeType MeRec.N = "VBA" MeRec.M = 5000 MeRec.D = #4/1/2020# Call Exam2(MeRec) MsgBox "完了"End SubSub Exam2(ByRef MeRec As MeType) Debug.Print MeRec.D & MeRec.N & MeRec.MEnd Sub 何も出力されない。ユーザー定義型の変数は引数として渡せず、エラーになるため。 2020/04/01VBA5000 2020/04/01 VBA5000 None 21. プロシージャの適用範囲について、以下の空欄に入る適切な語句を解答しなさい。標準モジュールで、先頭にキーワードを付けるか、または省略して作成したプロシージャは、すべてのモジュールのプロシージャから呼び出すことができる。一方、先頭にキーワードを付けて作成したプロシージャは、同一モジュールにあるプロシージャからのみ呼び出すことができる。 22. 標準モジュール「Module1」に次のExam1を、別の標準モジュール「Module2」にCallExam1・CallExam2・CallExam3を記述した。「Exam1」プロシージャを実行したときの結果として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー'標準モジュール Module1Sub Exam1() Call CallExam1 Call CallExam3 Call CallExam2 MsgBox "完了"End Subーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー'標準モジュール Module2Sub CallExam1() Debug.Print "CallExam1"End SubPublic Sub CallExam2() Debug.Print "CallExam2"End SubPrivate Sub CallExam3() Debug.Print "CallExam3"End Sub 完了のメッセージだけが表示される。 コンパイルエラー(Sub または Function が定義されていません)になり、実行できない。 CallExam1/CallExam3/CallExam2 の3行が出力される。 CallExam1/CallExam3 の2行が出力されてから、完了のメッセージが表示される。 None 23. モジュールの種類と、モジュールをまたいだプロシージャの呼び出しに関する説明として選択肢の中から適切なものを1つ解答しなさい。 標準モジュールは汎用的な標準プロシージャを格納し、Privateを付けない限りどのモジュールからも参照できる。異なる標準モジュールに同名のプロシージャがある場合は「モジュール名.プロシージャ名」で呼び出す。 フォームモジュールに記述した標準プロシージャは、他のモジュールからも自由に呼び出せる。 イベントプロシージャは標準モジュールに記述し、どのフォームからでも共通に利用できる。 異なる標準モジュールに同じ名前のプロシージャを作成することは、可読性が高まるため積極的に推奨される。 None 24. 標準モジュールの作成と削除に関する説明として、適切なものを1つ選びなさい。 標準モジュールは一度作成すると、削除することはできない。 標準モジュールを削除すると、そのデータベースファイル自体も一緒に削除される。 標準モジュールはデータベースに最初から1つだけ用意されており、新しく作成することはできない。 標準モジュールは、リボンの「作成」タブや、VBEのプロジェクトエクスプローラの「挿入」から作成でき、プログラム開発の必要に応じて自由に作成・削除できる。 None 25. フォームモジュール・レポートモジュールの作成と削除に関する説明として適切なものはどれか。以下の選択肢より1つ解答しなさい。 フォームモジュール・レポートモジュールはフォームやレポートを新規作成すると自動的に用意され、「コード保持」プロパティを「いいえ」にして保存して閉じると、そのコードが削除される。 「コード保持」プロパティを「いいえ」にして保存して閉じると、コードだけでなくフォームやレポート自体も削除される。 フォームモジュール・レポートモジュールの名前は、利用者が自由に変更できる。 フォームモジュール・レポートモジュールは、標準モジュールと同じくリボンの「作成」タブから単独で新規作成する。 None 26. フォームモジュール・レポートモジュールの具体的な作成・削除の手順に関する説明、として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 フォームモジュールを削除する手順を行うと、コードだけでなくフォーム自体も削除される。 フォームを新規作成してそのまま保存すれば、コードを書かなくてもプロジェクトエクスプローラにモジュールのアイコンが表示される。 デザインビューでフォームやコントロールを右クリックして「イベントのビルド」から「コードビルダー」を選ぶと、プロジェクトエクスプローラにそのモジュールがコードを記述できるよう作成・表示される。 「コード保持」プロパティを「いいえ」にすると、その場ですぐにコードが削除される。 None 27. モジュールの名前に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 フォームモジュールやレポートモジュールの名前は、利用者が自由に変更できる。 種類が異なるモジュールであれば、同じ名前を付けても問題ない。 異なる標準モジュールに同じ名前のプロシージャがある場合でも、プロシージャ名だけを書けばどちらを呼び出すか自動で判断される。 標準モジュールやクラスモジュールの名前は自由に変更できるが、種類が異なるモジュールどうしでも名前を重複させることはできない。 None 28. モジュールのエクスポート・インポートと、その際のファイルの種類に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 エクスポートしたモジュールのファイルは、他のデータベースファイルにインポートして利用することはできない。 モジュールをエクスポートするとデータベースファイルとは別のファイルとして保存でき、標準モジュールは拡張子「.bas」、フォーム・レポートモジュールは拡張子「.cls」のファイルになる。 モジュールをエクスポートすると、そのモジュールはデータベースファイルの中に上書き保存される。 標準モジュールをエクスポートすると拡張子「.cls」、フォーム・レポートモジュールをエクスポートすると拡張子「.bas」のファイルになる。 None 29. モジュールのエクスポートおよびインポートの操作手順に関する説明として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。 モジュールのエクスポートやインポートは、VBEではなくAccessのナビゲーションウィンドウからしか行えない。 エクスポートしたファイルは、エクスポート元と同じデータベースファイルにしかインポートできない。 インポートは、VBEのプロジェクトエクスプローラで右クリックし「ファイルのインポート」を選ぶが、標準モジュールのファイルは選択できない。 エクスポートは、VBEのプロジェクトエクスプローラで対象のモジュールを右クリックし「ファイルのエクスポート」を選び、保存先とファイル名を指定して「保存」ボタンを押す。 None Time's up