【一問一答】VBAエキスパート(Excel VBA スタンダード)で暗記した内容

VBAエキスパート
記事内に広告が含まれています。

こんにちは。

少し前にVBAエキスパートの独学勉強法について記事にしました。

 

【関連記事】

▼下のレベルのベーシックに関する記事

【合格体験談】VBAエキスパート(Excel VBA ベーシック)の独学勉強法

▼上のレベルのスタンダードに関する記事

【合格体験談】VBAエキスパート(Excel VBA スタンダード)の独学勉強法

 

上のレベルのスタンダートを受ける時に、独自で単語帳を作っていたのですが、その時のデータが残っておりまして…

もしかしたら同じ資格を勉強する方の参考になるかもしれないと思ったので、記事にしてみたいと思います。

 

 

※記事として公開していますが、半分は自分のための記録用です。

※『自分がわかれば良い』という基準で作成されたものです。

※記載に間違いなどがある可能性があります。参考にされる場合は確認をお願い致します。

※1章と8章は単語帳を使って暗記をしていないため、ありません。

 

なお、主に公式テキストの内容を元に作成していますが、非公式で出されている問題集(Kindleなどで販売されているもの)の内容を元に作成しているものもあります。

(↓公式テキスト)

VBAエキスパート公式テキスト Excel VBAスタンダード

新品価格
¥3,300から
(2024/8/29 15:11時点)

 

第2章:変数

宣言時に要素数を指定しないことをなんというか?

また、その時の構文は?(DimとAを使って)

動的配列

Dim A() As String

 

動的配列で、あとから要素数を指定する時に使うのは?

ReDim

 

ReDimを使うと指定した値は初期化されるが、リセットされないようにするには記述をどう変えれば良いか?

ReDim Preserveにする

 

区切り文字で配列を表示するには、何を使う?(英文字で) また変数の型は何になる?

Split Variant型

 

配列のSplitを使った時の構文は?

Split(”文字列など”,区切り文字”)

※必ずダブルクウォーテーションで囲むこと。

 

オブジェクト変数にオブジェクトを格納する時は●●ステートメントを使う。 またその時の構文は?

Set

Set 変数=~(オブジェクト)

 

オブジェクト変数を破棄する時は●●(英文字)を使う。 またその時の構文は?

Nothing

Set 変数=Nothing

※破棄するというのは初期値に戻ることではない。これやったらこの変数はもう使えない。エラーになる。

 

宣言した配列の、もっとも小さなインデックス番号を取得するには①を、もっとも小さなインデックス番号を取得するには②を使う。(両方とも関数)

①LBound関数

②UBound関数

※配列の最小値・最大値がわからない時などに使う。

 

元の変数Aに1を加えて1ずつ増やすことをなんと言う? またその時のコードは?

インクリメント

A=A+1

 

第3章:ステートメント

複数条件を判定して条件分岐するのに使うステートメントは?

Select Case ステートメント

 

Select Case ステートメントで条件を羅列する時、ただ並べる場合は(①)で区切る。●~●という数値の範囲の時は(②)と表記する。

①カンマ

②To (●To●)

 

Select CaseのCaseで、評価対象に数字が入る場合(100以上、50未満など)は(①)を使う。 (②)という表現になる。(「100以上」の場合)

①Is

②Case Is>=100

 

Do Loop ステートメントで、「条件が正しい場合は繰り返す」という時は①、「条件が正しくない場合は繰り返す」という場合は②を使う。(英字)

①While

②Until

※②は「~になるまでは」と考えた方がわかりやすい。

 

引数を文字列にする関数は?

CStr関数

※使い方:CStr(文字列)

 

Do Loop ステートメントで、条件を何も指定しないとどうなるか? またその時のコード記載の流れは?

無限ループ

Do

 何らかの処理

Loop

 

無限ループから脱するには●●という表現を使えば良い。

またその時はどのような構文になるか?(Do 処理も記載の後)

Exit Do

If 条件 Then Exit Do

 

メンバーを1人ずつ取り出して操作するには●●ステートメントを使う。 またその構文は?

For Each …Next

For Each 変数 In グループ名

 変数を使った操作

Next 変数

 

For Each …Nextなどでグループ名などに入ることがある、「複数の選択したセル」のことを何というか?

Selection

 

For Nextステートメントと、For Each …Nextステートメントの違いは何か?

For Nextステートメント・・・操作するメンバーの順番が重要な場合に使う

For Each …Nextステートメント・・・順番は関係なく全てのメンバーを操作する場合に使う

 

IIfステートメントは、羅列すると①を使った場合と同じ、入れ子にすると②を使った場合と同じ意味になる。(回答はAndかOrで)

①Or(または) ②And(かつ)

 

Do Loop ステートメントを終了したい場合は●●という表現を使う。(英文字)

Exit Do

 

For Each …Nextステートメントを終了したい場合は●●という表現を使う。(英文字)

Exit For

 

ワークブックを開く時の構文は?

Workbooks.Open ファイルのパス

 

第4章:ファイルの操作

ブックを開くには①メソッド、閉じるには②メソッドを使う。

③構文を答えよ(ブックを開く方)

①Open ②Close

③Workbooks.Open~(格納場所とファイル名が入る)

 

ブックを保存するのに使うメソッドは?(英文字)

SaveAs

 

日付けを作る関数は?(※日付以外でも使います)

(2024年6月23日→20240623に変更するなどできるもの)

Format関数

 

Format関数で、1桁の数値を返したい場合、どうすれば良いか?

値,の後に記載する書式記号の部分に「0」を指定する

(001や002とかなら「000」と指定すれば良い)

 

ファイルをコピーするには①ステートメントを使う。 ②構文は?

①FileCopy

②FileCopy コピー元のファイル,コピー先のファイル

※ファイル名が違っても良い。ただコピー先のファイルにその名前を入れれば良い。

 

新しいフォルダを作成するには①ステートメントを使う 。②構文は?

①MkDir

②MkDir パス

 

実行中のマクロが記載されているブックは?(英文字)

ThisWorkbook

 

ファイル名やフォルダ名を取得したい時は①ステートメントを使う。②構文は?

①Dir

②Dir(取得したいファイルやフォルダのパス,属性)

 

第5章:ワークシート関数

関数を呼び出して使いたい時は①を使う。(英文字) ②構文は?

①WorksheetFunction

②WorksheetFunction.関数(引数)

 

一番大きい、一番小さいを返す関数は?構文も。

Max、Mini関数

Max(範囲)

 

n番目に大きい、n番目に小さいを返す関数は?構文も。

Large、Small関数

Large(範囲,順位)

 

SumIf関数(特定のデータと同じ行のデータを合計する)の構文は?

SumIf(セル範囲,検索文字,合計セル範囲)

 

VLookup関数の構文は?

VLookup(検索値,対象範囲,列番号,検索の型)

※検索の型は完全一致なら0かFalse

 

CountIf関数(特定のデータの件数をカウントする)の構文は?

CountIf(対象範囲,検索文字)

 

Index関数とMatch関数の違い、構文を説明せよ。

Index関数…指定範囲の中で上からN番目を教えてくれる。

Index(検索範囲,上からN番目)

Match関数…指定範囲の中で何番目にあるか数字で返してくれる。

Match(検索値,検索範囲,照合の型)

※Matchの照合の型は、0(完全一致、並べ替えの必要がない)が多そう。

 

指定した月の月末の日を返す関数は? またその構文は?

EoMonth関数

EoMonth関数(開始日,nヵ月後)

 

日付と認識できる文字列を日付けに変換する関数は?

CDate関数

※構文は、CDate(値)

 

Index関数とMatch関数を入れ子にしてVLookみたいに使用する時は、どちらが先に来る?どちらが入れ子の外側に来る?

Matchが先に来て、外側に来るのはIndex

※可読性が悪いので、Index関数の「N番目」というところに変数を使った方が良い。

 

年・月・日の数値から日付けを作る関数は?構文は?

Dateserial関数

Dateserial(年,月,日)

 

第6章:セルの検索とオートフィルターの操作

セルを検索する時には、(①)メソッドを使う。 ②その構文は?

①Find

②セル範囲.Find(What:=検索する語句,LookAt:~)

※他にも引数はあるけど、メインのもののみ記載↑

 

Findメソッドで完全一致、部分一致はどう記載するか?

完全一致⇒ LookAt:=xlWhole

部分一致⇒ LookAt:=xlPart

 

Findメソッドでセルが見つからなかった際、①検索する語句が見つからなかった時、

②検索する語句が見つかった時はどう表現する?

①If 検索値 Is Nothing Then

②If Not 検索値 Is Nothing Then

 

①任意のセルを含む行全体、②任意のセルを含む列全体、どう記載する?

①任意のセル.EntireRow

②任意のセル.EntireColumn

 

行を削除する際には(①)メソッドを使う。 ②その構文は?

①Delete

②削除する行.Delete

 

Findメソッドで見つけたセルから範囲を特定する方法を2つ答えよ。

①Range(左上セル,右下セル)で特定

②Resizeプロパティ

※①はRange(Range(“A6”),Range(“C6”)) というような表現になる。

 

AutoFilterメソッドの構文は?

セル.AutoFilter 列,検索条件・文字1,絞り込み方法の定数,検索条件・文字2(あれば)…

※絞り込み方法の定数は、xlAndやxlOr

 

AutoFilterメソッドで出てくる、絞り込み方法の定数とは?2つ答えよ。

xlAnd、xlOr

 

AutoFilterメソッドで、検索条件が3つ以上出てくる場合は(①)を使い、定数の部分に(②)とコードに書く。

①配列

②xlFilterValues

 

『任意のセルを含むひとかたまりのセル』、どう書けば良い?

任意のセル.CurrentRegion

 

『列の一番下から上に向かい、最終セルの位置を指定する』、どう書けば良い?

Cells(Rows.Count,列番号).End(xlUp)

 

『任意のセルから下に向かい、最終セルの位置を指定する』にはどう書けば良い?

任意のセル.End(xlDown)

 

指定方法を変えると、いろいろな集計ができる(①)関数。 ②構文は?

③集計方法が3だと●●、9だと●●と同じ意味。(●●には関数が入る)

①SubTotal

②SubTotal(集計方法,集計範囲)

③COUNTA、SUM

※SubTotalは見えているセルだけを計算対象にする。

 

複数セルに一括で代入したい時のショートカットは?

(セルを選択して、1つのセルに入力した上で)Ctrl+Enter

 

オートフィルターかけたり外したりするショートカットは?

Ctrl+Shift+L

 

AutoFilterメソッドでの解除

引数を指定しないと(①)

引数のところに最初と同じ列番号を入力すると(②)となる。

①フィルターそのものが解除される。

②フィルターはそのままで、絞りこみが解除される。

 

第7章:データの並べ替え

漢字で入力されているものを並べ替える時は●●順に並べ替えられる。

ふりがな

 

セル内の漢字のふりがなを表示するための操作は?

「ホーム」→「フォント」タブの「ふりがなの表示/非表示」

※ふりがなの表示の設定もここでできる。

 

漢字にふりがなが設定されていない場合はどのような場合か3つ答えよ。

①他のアプリケーションからコピーした場合

②VBAでセルに代入した場合

③CSVファイルで読み込んだ場合

 

ふりがな設定がされているものとされていないものが混在している場合、どのような順で並べ替えられるか?

最初にふりがなあるものが来て、その後にふりがながないものが文字コード順に並べられる。

 

セル内のふりがなを取得したい場合は、(①)プロパティの(②)オブジェクトを使う。

③その時の構文は? ④ふりがな登録されていない場合はどうなる?

①Phonetic ②Text

③セル範囲.Phonetic.Text

④漢字がそのまま返ってくる

※=でつないで、ふりがなを代入することはできるけど、空白を入れてふりがなの消去はできない

 

「(1)テーブル内のセルから特定」で、タイトル行のみ表すにはどう記載する。(1語で)

HeaderRowRange

 

第9章:エラー対策

エラーの種類を答えよ(全4種類)

・記述エラー(記述に誤りあり)

・倫理エラー(コードの理論的な矛盾)

 ⇒コンパイルエラー(コンパイル時に発生)

 ⇒実行時エラー(実行時に発覚する)

 

コンパイルエラーをマクロ実行前に確認する方法は?

デバッグ→VBA Projectのコンパイルから実行

※エラーは黄色でわかるが、実行時とは違い、デバッグモードにはならない。

 

エラーが発生したら別の処理に移動するためには(①)ステートメントを使う。 ②構文は?

③エラーが発生しなかった時に備えて何をすれば良いか?

①On Error

②On Error GoTo ジャンプ先のラベル名

③Exit Subを入れておく

※Exit Subはラベル名の前の行。

 ラベル名は「ラベル名:~」という表記で記載

 

発生したエラーは●●オブジェクトに格納される。

Err

 

Errオブジェクトで、よく使われるプロパティとメソッドを3つ答えよ。

①Err.Descrioution(Descrioutionプロパティ)→エラー内容がわかる

②Err.Number(Numberプロパティ)→エラー番号がわかる

③Err.Clear(Clearメソッド)→エラー情報クリア

 

代表的なエラー番号を2つ。その内容は?

①9→インデックスが有効範囲にありません。(指定したシートが存在しない時など)

②1004→同じ名前のブックがある、ブック名などに不正な文字が… ブックが保護されている、など。

 

発生したエラーを無視する際の構文は?

On Error Resume Next

※例文ではプロシージャ名のすぐ下に記載されている。

 

ブックが保存されているか確認したい時は、(①)プロパティを使う。

②構文&結果はどのように返ってくるか?

①Saved

②~.Saved TrueかFalseで返ってくる。

 

ブックが保護されているか確認したい時は、(①)プロパティを使う。

②構文&結果はどのように返ってくるか?

①ProtectStructure

②~.ProtectStructure TrueかFalseで返ってくる

 

①データクレンジングのために文字種を変換する関数は? ②構文は?

③半角から全角、全角から半角に変える際の記述は?(定数のみ答える)

①StrConv関数

②StrConv(文字列,定数)

③半角から全角は「vbWide」、全角から半角は「vbNarrow」

 

①文字を置換する関数は? ②構文は?

③①を使って文字を除去するには?

①Replace関数

②Replace(元の文字列,検索文字,置換文字)

③置換文字に空白””を指定する

 

①日付を作る関数は? ②構文は?

①DateSerial関数

②DateSerial(年,月,日)

 

任意のセルを指定の書式で設定するのに使う関数は2つある。

①=で結んで使う方は?構文は? ②()で囲んで使う方は?構文は?

①NumberFormat関数 NumberFormat=”指定の書式”

②Format(値,書式記号)

※①での指定の書式はたとえば「2024/06/22」なら「yyyy/mm/dd」

 

第10章:デバッグ

マクロとは別枠で、プロパティや変数の内容を調べたり、代入したり、実行したりすることができる、●●

イミディエイトウィンドウ

※マクロ実行中のデバッグモードなど使用することが多いが、実行とは関係なく、いつでも使用できる。

 

イミディエイトウィンドウを表示する方法は?(2つ)

表示→イミディエイトウィンドウを押下

Ctrl+G

 

イミディエイトウィンドウでは調べる時は先頭に(①)を付ける。

②記載のルールがもう1つあるが、それを挙げよ。

①?

②英字は全て小文字で記載。

 

イミディエイトウインドウでできることを3つ、できないことを2つ挙げよ。

できる→調べる、代入、実行

できない→変数の宣言、小文字から大文字への自動変換

※小文字のままで良い。

※変数は使うことができる。宣言しなくて良いということ。

 

イミディエイトウィンドウでは変数は宣言しなくて良い。でも変数自体は使える。このことを●●という。

暗黙の宣言

 

イミディエイトウィンドウを表示する構文は?

Debug.Print 表示内容

※カーソルがある位置に出力されるので位置注意。

 

イミディエイトウィンドウは(①)をドラッグすることで画面から切り離せる。

切り離した状態を(②)、切り離していない状態を(③)という。

①タイトルバー ②フローティング ③ドッキング

 

①マクロを一時停止される方法を2つ答えよ。

②マクロのコードを1行ずつ止めながら進めることをなんというか?

①ブレークポイント、Stopステートメント

②ステップイン

 

①ブレークポイントを設定する方法を2つ答えよ。

②背景色は●●になる。

③ストップした時、その行は実行されている?されていない?

④再開する方法は?

①F9を押下、左のインジケーターをクリック。

②茶色

③実行されていない

④F5を押下(もしくは普通に実行→継続でも可)

 

デバッグモードではイミディエイトウィンドウを使わなくても変数などを調べることができる。その方法は?

マウスポイントを合わせる

 

Stopステートメントは(①)するだけで良い。(文章が入る)

(②)ステートメントを組み合わせることも多い。

①Stopと書く

②If

 

ステップインするには、実行したい(①)の中にカーソルを置き、(②)を押下する。

1行ごと進んでいく。黄色くなっているのは(③)分。

①プロシージャ 

②F8  

③これから実行する

 

①引数に指定したものがどんな種類のデータか調べることができる関数は? ②その構文は?

①TypeName関数

②TypeName(調べたいもの)

※RangeとかStringとか返ってくる。変数に格納されている値も調べることができる。

 

TypeName関数で小数点がついている数字の場合はなんと返ってくるか?

Double

※倍精度浮動小数点数

 

①引数に指定した値が数値かどうかを判定できる関数は? ②構文は?

①IsNumeric関数

②IsNumeric(引数)

※TrueかFalseで返ってくる

 

①引数に指定した値が日付かどうかを判定できる関数は? ②構文は?

①IsDate関数

②IsDate(引数)

※TrueかFalseで返ってくる

 




コメント

タイトルとURLをコピーしました