VBAエキスパート資格試験を受けてみて

# VBAエキスパート #
- 前置き
    -
「ExcelVBAベーシック」取得記念として投稿しました。
VBAエキスパートで他の資格を取得したら更新します。(おそらく)
マクロの資格試験する人の参考になれば幸いです。

ExcelVBAの資格試験は以下より受験できます。
https://vbae.odyssey-com.co.jp/
└ExcelやAccessのマクロやVBA（Visual Basic for Applications）のプログラミングスキルを証明する資格試験。

- VBAエキスパートとは
    -
VBAエキスパートはExcel、AccessのVBAの資格試験です。
それぞれベーシックとスタンダードの２つのレベルがあり、
Excel・Access両方のスタンダードを取得すると
「スタンダードクラウン」のオープンバッジを発行してもらえるみたいです。
(メールの署名にあったらかっこいいかも)
詳しいことは前置きのURL先に全部書いてありますので省略します。

- 試験の学習方法と所感
    -
 **ExcelVBAベーシック**
  - 試験概要
    - 問題数：約40問
    - 出題形式：選択、ドロップダウンリスト、穴埋め記述...
    - 試験方法：CBT形式
    - 試験時間：50分
    - 合格基準：65%~80%　(私が受験したときは80％くらいでした)
  
  - 学習方法
    ★ 使用参考書「VBAエキスパート公式テキスト Excel VBA ベーシック」
       └ https://aoten.jp/store/detail.html?no=a2800i_v190530
    - 参考書を３周する
        - １周目：全部読む(「知らないやつ...」と思った箇所に線を引く)
        - ２周目：１周目で線を引いた箇所だけ読む
        - ３周目：２周目から時間をおいて(１か月以上)全部読む(※１か月もの時間を置いたのはやる気喪失してしまったからです。)
    - 模擬試験を約１０回実施(※模擬試験は参考書にURL記載されてます)
	→８割くらいを目標にする。
    - (概算)学習時間：30分×3回+30分×10回くらい？

- 試験所感
    - 「この問題…模擬試験でやったやつだ！」という某通信教育の付録漫画みたいな感じでした。
    - 試験問題は類似が多く解きやすい一方で、for文×if文の条件問題を解くときは若干メモ紙欲しい気持ちになりました。普段スマホ電卓に頼っている人は暗算できる程度の集中力は持参した方がいいかもしれません。
    - 上記の学習以外にVBAでツール作成をいくつかやっていたので、記載した学習時間は土台ありでの話になります。(そもそも大雑把すぎる学習時間算出ですが)
    - 見直したい問題などがあれば、「あとで見直す」というなチェックボックスが画面内にあるので活用してみるといいかもしれません。

参考までに……VBAベーシック資格試験あたりに書いたコードです。
色々言いたいことあるかもですが、これくらいのスキルで受けました～という目安になります(笑)
<スケジュール表に新しい月を追加する処理>
```
    '最終年月の値の取得
        Number = 1
        Call Set_ColMax(ColMaxYear, Number, Schedule)
        Number = 2
        Call Set_ColMax(ColMaxMonth, Number, Schedule)
        NowYear = worksheets(Schedule).Cells(1, ColMaxYear)
        NowMonth = worksheets(Schedule).Cells(2, ColMaxMonth)
    '追加行の取得
        Number = 4
        Call Set_ColMax(ColMax, Number, Schedule)
        Number = 10
        Call Set_RowMax(RowMax, Number, Schedule)
        RowMax = RowMax
    '追加年月と日数の取得
        If NowMonth = 12 Then '年末処理(12月)
                NowMonth = 1
                NowYear = NowYear + 1
                LastDate = DateSerial(NowYear, NowMonth, 1) - 1
                AddDay = Day(LastDate) '追加日数
            Else '(1~11月)
                LastDate = DateSerial(NowYear, NowMonth + 2, 1) - 1
                AddDay = Day(LastDate) '追加日数
                NowMonth = NowMonth + 1
        End If
    '追加処理
        rc = MsgBox(NowYear & "年" & NowMonth & "月分を追加しますか？", vbYesNo + vbQuestion)
        If rc = vbYes Then
                With worksheets(Schedule)
                        .Cells(1, ColMax + 1) = NowYear '年の入力
                        k = ColMax + 1 '入力列
                        For i = 1 To AddDay
                                For j = 1 To 2
                                    Select Case j
                                        Case 1
                                            .Cells(2, k) = NowMonth '月の入力
                                            .Cells(3, k) = i '日の入力
                                            .Cells(4, k) = "AM" 'AMの入力
                                            .Cells(6, k) = WeekdayName(Weekday(DateSerial(NowYear, NowMonth, i)), True) '曜日の取得
                                            '書式
                                            .Columns(k).ColumnWidth = 2 '列幅
                                        Case 2
                                            .Cells(2, k) = NowMonth '月の入力
                                            .Cells(3, k) = i '日の入力
                                            .Cells(4, k) = "PM" 'PMの入力
                                            .Cells(6, k) = WeekdayName(Weekday(DateSerial(NowYear, NowMonth, i)), True) '曜日の取得
                                            .Cells(2, k).Font.Color = RGB(255, 255, 255) '見えないようにする
                                            .Cells(3, k).Font.Color = RGB(255, 255, 255) '見えないようにする
                                            .Columns(k).ColumnWidth = 2 '列幅
                                    End Select
                                    If .Cells(6, k) = "土" Or .Cells(6, k) = "日" Then
                                        .Range(.Cells(6, k), .Cells(RowMax, k)).Interior.Color = RGB(155, 155, 155) '土日の場合は色を変更する。
                                    End If
                                     .Cells(4, k).Interior.Color = RGB(116, 181, 228)
                                    k = k + 1
                                Next j
                                 '書式設定
                                            With .Range(.Cells(1, k - 2), .Cells(RowMax, k - 1)).Borders
                                                .LineStyle = xlContinuous
                                                .Weight = xlThin
                                                .Color = vbBlack
                                            End With
                                            With .Range(.Cells(1, k - 2), .Cells(RowMax, k - 1)).Borders(xlInsideVertical)
                                                .LineStyle = xlDash
                                                .Weight = xlThin
                                                .Color = vbBlack
                                            End With
                        Next i
                End With
        Else

                Exit Sub
        End If

```
(記載：2023/10/12)

----------

 **ExcelVBAスタンダード**
更新予定未定。