Excel VBAスタンダードは、Office製品のバージョン2010から2016までを網羅したExcelのVBAスキルを測定します。
プロパティやメソッドなど、Excel VBAの基本文法を理解してベーシックレベルよりも高度なマクロを記述・読解する能力を診断します。
スタンダードレベルで診断するスキルには、ベーシックレベルの内容をより深めた知識に加えて、配列、検索とオートフィルター、並べ替え、テーブル操作、エラー対策などが含まれます。
イミディエイトウィンドウでは実行できないステートメントはどれか。次の中から1つ選びなさい。
?Range("A5").Value
MsgBox "Hello!"
Dim x As Integer
For i = 1 To 10:total = total + i:Next i:Print total
次のような2つのプロシージャを同一の標準モジュール上に作成した。「M_Proc」プロシージャの実行結果はどうなるか。次の中から正しいものを1つ選びなさい。
Sub M_Proc ()
Dim a As Long
a = F_Proc(3)
MsgBox a
End Sub
Function F_Proc(Optional x As Long = 5) As Long
F_Proc = x * 2
End Function
次のプロシージャはセルA1の値に応じてメッセージを表示するものである。セルA1の値が3未満だったら「A」と表示させたい。このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
Sub Sample()
Select Case Range("A1").Value
Case 【 1 】
MsgBox "A"
Case 5
MsgBox "B"
Case 7 To 9
MsgBox "C"
Case Else
MsgBox "該当なし"
End Select
End Sub
次の図のように、メッセージボックスに[はい]ボタン、[いいえ]ボタンおよび情報メッセージアイコンを表示したい。このとき、【 1 】に入る命令はどれか。次の中から正しいものを1つ選びなさい。
Ret = MsgBox("処理時間は約3分です。処理を開始しますか?", 【 1 】)
vbYes + vbNo + vbInformation
vbYesNo + vbInformation
vbYesNo , vbInformation
vbYesNo & vbInformation
プロシージャの中で文字列型のデータを3つ使いたい。要素数3の配列を宣言するとき、【 1 】に入る適切な命令を解答欄に入力しなさい。ただし、配列の名前は「myArray」とする。
【 1 】 As String
次のプロシージャは、引数で受け取ったユーザー名と現在の日時を「C:¥LoginLog.txt」に追記するものである。このプロシージャ実行時にエラーが発生したときには、エラー番号とその内容をメッセージボックスに表示したい。このとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
Sub Sample(UserName As String)
On Error GoTo ErrHandl
Open "C:\LoginLog.txt" For Append As #1
Print #1, UserName & vbTab & Now
Close #1
Exit Sub
ErrHandl:
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラー内容:" & Err.【 1 】
End Sub
次の表の中から、C列が空白の行だけを抽出するコードはどれか。次の中から正しいものを1つ選びなさい。
Range("A1").AutoFilter 3, ""
ActiveSheet.AutoFilter 3, ""
Range("A1").AutoFilter "C", ""
ActiveSheet.AutoFilter "C", ""
次の表から、ネイティブ講師が担当するコースの数(B列に◯マーク)を数えて、メッセージボックスに表示したい。このとき【 1 】に入る適切な命令を解答欄に入力しなさい。
Sub Sample()
Dim cnt As Long
cnt = 【 1 】.CountIf(Range("B:B"), "◯")
MsgBox "ネイティブ講師のコース数は " & cnt & " コースです"
End Sub
次の表から、コース名に「トラベル」を含むコースを検索し、その行を削除したい。このとき【 1 】に入る適切な命令を解答欄に入力しなさい。なお、コース名の検索には部分一致検索を用いることとする。
Sub Sample()
Dim Target As Range
Set Target = Range("A:A").Find(What:="トラベル", Lookat:= 【 1 】)
If Target Is Nothing Then
MsgBox "見つかりませんでした"
Else
Target.EntireRow.Delete
End If
End Sub