第6ラウンド VBAエキスパート・ベーシック試験対策もかねたクイズR06

Excel VBAエキスパート・ベーシック試験対策も兼ねたクイズ

VBAエキスパートの問題集が少なくて、困っている方のために
ベーシック試験対策もかねたクイズを作成しました。

VBAエキスパートへの道クイズ【第11回】

クイズ11回に登場した語句の解説

語句の解説はクイズの下にあります。


気軽に対策 Excel VBAエキスパート・ベーシッククイズ12

VBAエキスパートの問題集が少なくて、困っている方のために
ベーシック試験対策もかねたクイズを作成しました。

VBAエキスパートへの道クイズ【第12回】

VBAエキスパートへの道クイズ11回と12回に登場した問題と語句の解説

11に関する問題

モジュールに関する説明で正しいものはどれですか。
解説:
モジュールはVBAのコードを保存するための場所であり、VBAエディタ内で新しく挿入することができます。
Excelのシートとは異なり、VBAの関数や手続きをまとめる場所として用いられます。

次のマクロを他のマクロから実行する時のコードで、正しいものはどれですか?
解説:
マクロを他のマクロから呼び出すときのコードは、呼び出すマクロ内で定義した引数を正確に使用する必要があります。
しかし、この問題では引っ掛けがあり、呼び出し側では、引数をnameとしていますが、呼び出される側のマクロではその値を担当という引数名で受け取っています。
ですから同じ値でも、回答はコードとして書く場合は、以下となります。
MsgBox 担当 & "さん、今日もよろしくお願いします。 呼び出しコード

イベントを利用するマクロはどのモジュールに記述する必要がありますか?
解説:
イベントを利用するマクロは、イベントが発生する対象のオブジェクトに応じて、 ワークシートモジュールやユーザーフォームモジュールなどに記述する必要があります。
例えば、ワークシートの特定のセルが変更されたときに実行されるマクロはワークシートモジュールに記述します。
問題では印刷する直前に処理を実行する、WorkbookオブジヱクトのBeforePrintイベントプロシージャーを実行したいので、ワークブックモジュールに記述します。

新規入力行を選択するために、次のコードが書いてある。消された空欄①と②に入る正しいコードを選びなさい。
解説: RangeオブジェクトのEndプロパティ
Endプロパティは、対象となるセルが含まれる領域の終端のセルを示すRangeオブジェクトを返します。
キー操作のEnd+方向キー(↑、↓、←、→のいずれか)に相当します。
新規入力行

範囲の指定方法を変えたみたところ、同じ結果が得られないコードがありました。同じ結果が得られないコードはどれですか?
解説: 指定範囲に★を入力する以下のマクロ
範囲の指定、範囲を指定するには、Rangeプロバティを使用します。

Range("左上のセル,右下のセル")という書きかた→Range("A1,B3")、
Range("左上のセル:下のセル")という書きかた→Range("A1:B3") があります。
さらにそれをCellsを使って指定することもできます。
Range(Cells(1, 1), Cells(3,2))

指定範囲に★を入力するのマクロ
それらのどれにも当てはまらない書きかたはエラーとなります。
エラーコードは、sh.Range("A1, E5") = "★" です。

"VBAでMsgBox関数でnamae付き引数の渡し方について、正しいコードはどれですか?
解説:
MsgBox prompt:="ご苦労さまです。", Title:="あいさつ", Buttons:=vbOKOnlyが正しい名前付き引数の渡し方となります。
名前付き引数を使用する際には:=を使用して、引数の名前と値を指定します。
MsgBox関数の構文:MsgBox(prompt[, buttons] [, title] [, helpfile, context])

次の内コレクションでないものはどれですか?
解説:
Rangeは、コレクションではなく、Excelのセルの範囲を表すオブジェクトです。
他の選択肢はExcelのオブジェクトのコレクションを表します。

"次のプロシージャで、予算2000円以下に収まっているかを判断したい。 正しいコードはどれですか?
解説: IF文の入れ子構造
判定
If ActiveCell > 2000 Then
ElseIf ActiveCell <= 2000 Then

以下のフォントを変更するプロシージャにおいて、同じコードが繰り返されています。
解説:

Withなし
記述が長く芯ってしまうオブジェクトの指定を簡略化するためには、Withステートメントを使うことができます。
Withステートメントとは、with対象オブジェクトからEndWithという行までの間の処理を、すべてこの対象オブジェクトに対して行うものです。
このように書くことで、オフ‘ジエクトを取得するプロパティ等の記述を省くことができます。
Withあり


VBAエキスパートへの道クイズ12回に登場した問題と語句の解説

12に関する問題

ByValキーワードと、ByRefキーワードの説明で正しいものを選びなさい。
解説:
ByValは値渡しで、引数として渡された変数の実際の値は変更されません。
ByRefは参照渡しで、引数として渡された変数の値自体が変更される可能性があります。

A1セルの日付から年、月、時を取り出してB1、C1、D1に表示するプロシージャで正しいものはどれですか?
A1セルには、

解説:
セルの日付から
問題文は、A1セルに現在の日付と時刻が入力されるマクロが示されています。 そのため、A1セルの日付から年、月、日を取り出す必要があります。

セルの文字列から不要なスペースを取り除くコードで正しいのはどれですか?
解説:
正解はTrim(セル.Value)
Trim関数は文字列の先頭および末尾の不要なスペースを取り除きますが、文字と文字の間のスペースは残します。

DateSerial関数
解説:

年齢が入力されたときに、メッセージを表示し、年齢が入力されない時は終了するマクロ。
年齢 = InputBox("あなたの年齢を入力してください。", "年齢入力")で数値が入力されたかどうかを判定する。

数値かどうか 解説:
IsNumeric関数は数値かどうかを判定する関数です。
IsEmpty: セルが空かどうかを判定する関数。
IsDate: 値が日付かどうかを判定する関数。

文字列の中の何番目にあるかを調べる
解説:
Instr関数は、引数に指定した対象文字列から指定した文字を検索して最初に見つかった文字の位置を返します。
文字が見つからない場合は0を返します。
問題は 隣のセルに @が先頭から何番目にあるかという位置を出すので Instr 関数を使います。
何番目にあるか

次のVBA関数の説明で正しいものは、どれですか?
解説:

文字列関数についての質問です。似ているので注意が必要です。
StrComp関数は、2 つの文字列を比較した結果を返す。
StrConv関数は、文字列を変換する。
StrReverse関数は、文字列の文字の並びを逆順にする。

Format関数
解説:
Format関数は 文字列を引数で指定した書式に変換します。 この問題では日付でしたが、 日付だけでなく通貨や 数値の書式も指定できます
Format
Format関数を使って和暦を表示するときのコードの記載方法です。
Range(""A1"") = Format(expression:=Date, Format:=""ggge年m月d日"")
Range(""A2"") = Format(expression:=Date, Format:=""gge年m月d日"")
Range(""A3"") = Format(expression:=Date, Format:=""ge.m.d"")