日商プログラミング検定 STANDARD VBA サンプル問題の第1問を解いてみた
商工会議所が実施している「日商プログラミング検定 STANDARD VBA」の勉強をしています。
サンプル問題を解いてみました。
問題は下記のリンクから見られます。
https://www.kentei.ne.jp/wp/wp-content/uploads/2019/07/sample_stv1.pdf
ただ正しい選択肢を書くだけではなく、間違ったものを含めて用語の意味を解説することに注意しました。VBA初学者の方のためになれば幸いです。
第1問
1. ユーザが行った操作を記録して同じ操作を自動で行うことができる機能を何というか。
答 ①マクロの記録 これはサービス問題ですね。
②アドインは「(Excelに)追加で入れられる機能」のこと、③デザインモードはシートに配置したボタンなどを編集できる状態のこと、④Visual Basic はVBAの元になったプログラミング言語のことですね。
2. 整数値を格納する変数の型を何というか。
答 ①Integer 整数というそのまま意味ですね。
②Byteはこれもそのままでバイト型、③Booleanは論理型、④Doubleは倍精度浮動小数点型です。
3. 文字列を格納する変数の型を何というか。
答 ①String 文字列型ですね。stringとは「糸」の意味ですが、文字の連なりが糸のように見えるから「文字列」という意味もあるそうです。
② Dateは日付型、③Byteは上記の通りバイト型、④のBoolean型も上記の通り論理型です。
4. 変数名として使用することができないものはどれか。
答 ①1ban VBAでは変数名の最初に数字(アンダーバーも)を使うことができません。
5. 変数名として使用することができないものはどれか。
答 ①No-1 VBAでは変数名にアンダー「_」以外の記号を使うことができません。
6. 積を求める演算子は何か。
答 ①* アスタリスク。なぜ「×」でないかというと、昔のカードパンチ機に「×」のキーがなくて「*」で代用した名残だそうです。
②-は差、③+は和、④/は商を求める演算子です。
7. 整数値に対する演算で剰余(割り算の余り)求める演算子は何か。
答 ①Mod modulo「剰余」の略ですね。
②¥はフォルダの階層の区切りを表します。③*は積を求める演算子、④/は商を求める演算子です。
8. 論理式において「または」(論理和)を示す演算子はどれか。
答① Or 英単語の意味そのままですね。
②Andは「かつ」、③Notは「~でない」、④Xorは「どちらか一方のみ」の意味ですね。
9. 論理式において排他的論理和を示す演算子はどれか。
答①Xor 問8の解説通りです。他の選択肢についても同様です。
10.論理演算子ではないものはどれか。
答①Like これは比較演算子ですね。文字列が何かのパターンに合うかどうかの判定をします。「好き」という意味ではなくて「~のような」という意味です。
問8,9にもありますが他の選択肢は全て論理演算子です。
11. 配列を宣言するにあたり、必ず記述する記号はどれか。
答①() VBAでは配列を宣言するときに「Dim Array1()」などと書くので「()」が正解です。「<>」は「≠」で「等しくない」の意味で使われます。[]はR1C1参照形式のときに使います。{}は普通使いません。
12.For文を用いるとき関連するキーワードは何か。
答① Next 最も基本的な繰り返し構文の「For ~Nextステートメント」ですね。
②Loopは④Doと、③WhileはWendと合わせて使います。
13. Select文を用いるとき関連するキーワードは何か。
答①Case これはSelect Caseステートメントについての問題ですね。
②IfはThenやEnd Ifと合わせて使います。③Whileと④Loopについては前問の通りです。
14.セル"B3"の値を取得する記述はどれか。
答①Range("B3").Value Valueは「値」という意味なのでこれもそのままですね。
②Range("B3").Font.Color文字列の色を、③Range("B3").Interior.Colorはセルを塗っている色を取得します。④Range("B3").BackgroundColorという記述は正しくありません。実行するとエラーになります。
15. セル"B3"の文字列の色を取得する記述はどれか。
答①Range("B3").Font.Color 前問の解説通りですね。
16. セル"B3"の背景色を取得する記述はどれか。
答② Range("B3").Interior.Color 「背景」という言葉に釣られてRange("B3").BackgroundColorを選ばないよう注意ですね。
※これまでの答えは全て①ですが、ここで初めて①ではなくなります。二重に引っ掛け問題のようです。
※また「Interior.Color」が「InterioColor」と誤表記されています。
17. Range("B3").Offset(-1,0)はどのセルを表すか。
答④ B2 B3から行を1つ戻り、列はそのままなのでB2です。「Range("A1")」という表記では「列→行」という順番ですが、「Offset(1,0)」という表記では「行→列」という順番に要注意ですね。
18. マクロを実行した結果、B5セルが「=sum(B1:B4)」となるマクロは次の打ちどれか。
答①Range("B5").FormulaR1C1 = "=sum(R[-4]C:R[-1]C)" R[n],C[n]という表記から、相対参照です。B5を基準にB1からB4を指定すればよく、行(Row)を4つと1つ戻ればよいことから①が答えと分かります。
19. Range("A:A").Selectで選択できるセルは次のうちどれか。
答①列A全体 これは知識の問題なので迷うなら実行して確かめるのがいいと思います。
なお②行1全体選択ならRange("1:1").Select、③A1選択ならRange("A1").Select、④A1とA2とB1とB2選択ならRange("A1:B2").Selectが一例です。
20. アクティブセルがB3のとき、ActiveCell.Column の値はいくつか。
答①2 Columは列の意味で、B列は右から2番目なので2が正解です。
ちなみにActiveCell.CRowの値なら3ですね。
これで第1問の解答解説が全て終わりました。全体的に平易な問題が多く、仕事でVBAを書いている人ならほとんど正解できる内容でしょう。
第2問に続きます。