Excelのvbaとは何ですか? (初級から上級まで)
VBAとは何ですか?
VBA (Visual Basic for Applications) は、Excel のほぼすべてを自動化できるプログラミング言語です。 VBA を使用すると、Excel オブジェクトを参照し、それらに関連付けられたプロパティ、メソッド、イベントを使用できます。たとえば、マクロを使用してピボット テーブルを作成し、グラフを挿入し、ユーザーにメッセージ ボックスを表示できます。
クレイジーなことは次のとおりです。
手動で数分で実行するすべてのタスクを、VBA ではワンクリックで同じ精度で数秒で実行できます。ドキュメント、ブックを開いたとき、または特定の時間に自動的に実行される VBA コードを作成することもできます。
具体的な例を示します。
毎朝オフィスに行くと、最初にしなければならないことは、月初から現在までの売上のピボットテーブルを作成し、上司に提示することです。これには、毎日同じ手順が含まれます。しかし、 VBA を使用してピボット テーブルを作成し、ワンクリックでそれを挿入できることに気づいてから、1 日あたり 5 分を節約できました。
これがVBAの仕組みです
VBA はオブジェクト指向言語であり、オブジェクト指向言語として、VBA ではオブジェクトを使用してそのプロパティを定義する方法でコードを構造化します。
簡単に言うと、最初にオブジェクトを定義し、次に実行するアクティビティを定義します。 VBA でコードを記述するために使用できるオブジェクト、コレクション、メソッド、およびプロパティがあります。
>お見逃しなく<
誰かに箱を開けるように言いたいとします。あなたが使う言葉は「箱を開けてください」です。平易な英語ですね。しかし、VBA とマクロの作成に関しては、次のようになります。
Box.Open
ご覧のとおり、上記のコードはここでのオブジェクトであるボックスから始まり、これに「Open」メソッドを使用しています。もう少し具体的に考えてみましょう。赤色の箱を開けたいとします。この場合のコードは次のようになります。
Boxes(“Red”).Open
上記のコードでは、box がコレクションであり、open がメソッドです。複数のボックスがある場合は、ここで特定のボックスを定義します。別の方法は次のとおりです。
Box(“Red”).Unlock = True
上記のコードでは、ボックスは再びコレクションであり、Unlock は TRUE に設定されたプロパティです。
Excel で VBA は何に使われますか?
Excel では、VBA をさまざまな用途に使用できます。ここにあるいくつかの:
- データの入力: セルまたはセル範囲にデータを入力できます。あるセクションから別のセクションにデータをコピーして貼り付けることもできます。
- タスクの自動化: 多くの時間を費やす必要があるタスクを自動化できます。私が挙げられる最良の例は、マクロを使用してピボット テーブルを作成することです。
- カスタム Excel 関数を作成する: VBA を使用すると、カスタム ユーザー定義関数を作成し、ワークシートで使用することもできます。
- アドインの作成: Excel では、VBA コードをアドインに変換し、他のユーザーと共有することもできます。
- 他の Microsoft アプリケーションとの統合: Excel を他の Microsoft アプリケーションと統合することもできます。たとえば、テキスト ファイルにデータを入力できます。
Excel プログラミングの基礎
1. 手順
VBA のプロシージャは、特定のアクティビティを実行するコードのセットまたは 1 行のコードです。
- SUB : Sub プロシージャはアクションを実行できますが、値を返しません (ただし、オブジェクトを使用して値を取得できます)。
- Function : Function プロシージャを使用して、スプレッドシートまたは他の SUB および FUNCTION プロシージャで使用できる関数を作成します (こちらを参照してください: VBA 関数)。
2. 変数と定数
コード内で値を複数回使用するには、変数と定数が必要です。
- 変数: 変数には値を格納できます。変数には名前があり、そのデータ型を定義する必要があり、格納する値を変更できます。名前が示すように、「VARIABLE」には固定値がありません。システム内に保管される保管箱のようなものです。
- 定数: 定数にも値を格納できますが、コードの実行中に値を変更することはできません。
3. データ型
VARIABLES と CONSTANTS のデータ型を宣言する必要があります。
変数または定数のデータ型を指定すると、データの有効性が保証されます。データ型を省略した場合、VBA は変数にバリアント データ型を適用します (これが最も柔軟です)。VBA はデータ型が何であるべきかを推測しません。
ヒント:明示的な VBA オプション
4. オブジェクト、プロパティ、メソッド
Visual Basic for Applications はオブジェクト指向言語であり、それを最大限に活用するには、 Excel オブジェクトを理解する必要があります。
Excel で使用するブックにはさまざまなオブジェクトが含まれており、これらすべてのオブジェクトにアクセスできるプロパティと使用できるメソッドがいくつかあります。
5. イベント
Excel で何かを行うたびに、セルに値を入力したり、新しいワークシートを挿入したり、グラフを挿入したりすることがイベントになります。以下はオブジェクトに応じたイベントの分類です。
- アプリケーション イベント:これらのイベントは Excel アプリケーション自体に関連付けられます。
- ワークブック イベント: これらのイベントは、ワークブック内で発生するアクションに関連付けられます。
- ワークシート イベント: これらのイベントは、ワークシート内で発生するアクションに関連付けられます。
- チャート イベント:これらのイベントはチャート シート (ワークシートとは異なります) に関連付けられています。
- ユーザーフォーム イベント:これらのイベントは、ユーザーフォームで発生するアクションに関連付けられます。
- OnTime イベント: OnTime イベントは、特定の時間にコードをトリガーできるイベントです。
- OnKey イベント: OnKey イベントは、特定のキーが押されたときにコードをトリガーできるイベントです。
6.適用範囲
range オブジェクトは、VBA コードで範囲を参照する最も一般的で一般的な方法です。セルアドレスを参照する必要があります。構文を説明します。
Worksheets(“Sheet1”).Range(“A1”)
7.条件
他のプログラミング言語と同様に、VBA で条件をテストするコードを作成することもできます。これを 2 つの異なる方法で行うことができます。
- IF THEN ELSE :これは、条件をテストし、その条件が TRUE の場合にコード行を実行するために使用できる IF ステートメントです。次のようにネスト条件を記述することもできます。
- SELECTT CASE : 選択ケースでは、条件を指定してから、異なるテスト結果のケースを指定して、実行するコードの異なる行を実行できます。 IF ステートメントよりも少し構造化されています。
8. VBA ループ
VBA では、アクションを繰り返し実行できるコードを作成できます。このようなコードを作成する方法はいくつかあります。
- For Next : For Next の使用に最も適しているのは、一連のアクションを一定の回数だけ繰り返す場合です。
- For Each Next : オブジェクトのコレクションからオブジェクトのグループを反復処理する場合に使用するのに最適です。
- Do While ループ: Do While ループの背後にある単純なアイデアは、条件が true である間にアクティビティを実行することです。
- Do until ループ: Do until ループでは、VBA はループを実行し、条件が FALSE の場合は実行を継続します。
9. 入力ボックスとメッセージボックス
- インプットボックス: インプットボックスは、ユーザーに対して入力ボックスを表示し、回答を収集する機能です。
- メッセージ ボックス: メッセージ ボックスはユーザーにメッセージを表示するのに役立ちますが、メッセージ ボックスにボタンを追加してユーザーからの応答を取得するオプションもあります。
10. エラー
Excel ではプログラミング エラーが発生すると不運なので、何としても対処する必要があります。
- 構文エラー: これらはコードの作成中に発生するタイプミスに似ていますが、VBA はこれらのエラーを報告することで役立ちます。
- コンパイル エラー: アクティビティを実行するコードを作成したが、そのアクティビティが無効な場合に発生します。
- ランタイム エラー: コードの実行中に RUNTIME エラーが発生します。コードが停止され、エラー ダイアログ ボックスが表示されます。
- 論理エラー: これはエラーではありませんが、コードの作成中のエラーであり、検出して修正する際に問題が発生する場合があります。
Excelでマクロ(VBAプログラム)を書く
私は、誰かが Excel でプログラミングを始めるとき、最初は彼/彼女がゼロからどんどんコードを書くべきだと強く信じています。ゼロからコードを作成すればするほど、VBA がどのように機能するかが理解できます。
ただし、複雑なコードに飛びつくのではなく、単純なコードを作成することから始める必要があります。だからこそ、今は複雑なことは考えないでほしいのです。
マクロ コードを書いてピボット テーブルを作成することもできますが、現時点ではそこまで考えないでください。スプレッドシートで実行したいアクティビティについて考えてみましょう。そのアクティビティのコードを記述できます。
- 「開発」タブに移動し、「Visual Basic」ボタンからVisual Basic Editorを開きます。
- その後、「プロジェクトウィンドウ」から新しいモジュールを挿入します(右クリック ➢ 挿入 ➢ モジュール)。
- その後、コード ウィンドウに移動し、以下に示すように、「Enter Done」という名前のマクロを作成します (SUB プロシージャを作成します)。
- そこから、上で説明したコードを記述する必要があります。ちょっと待って、次のように考えてください。値を挿入するセルを指定してから、入力する値を指定する必要があります。
- セル参照を入力します。このためには、以下のように RANGE オブジェクトを使用してセル アドレスを指定する必要があります。
- その後、ポイントを入力すると、ポイントを追加した瞬間に、設定できるプロパティとその範囲で実行できるアクティビティのリストが表示されます。
- ここから、「Value」プロパティを選択し、セル「A1」に挿入するテキストを設定する必要があります。これを行うと、コードは次のようになります。
- 最後に、コード行の上にテキストを入力します(「このコードはセル A5 に値「完了」を入力します)。これは、作成したコード行を定義するために挿入できるVBA コメントです。
Sub Enter_Done() 'this code enters the value “Done” in the cell A5 Range("A1").Value = "Done" End Sub
これを理解しましょう…
このコードは 2 つの異なる部分に分割できます。
- 最初の部分では、RANGE オブジェクトを使用してセル アドレスを指定しました。また、範囲オブジェクトを使用してセルを参照するには、セル アドレスを二重引用符で囲む必要があります (角括弧を使用することもできます)。
- SECOND 部分では、セルに入力する値を指定しました。これで、「.Value」を使用してセル A5 の value プロパティを設定しました。その後、次に指定するのは、 value プロパティに相対的な値です。値を定義するときは (テキストの場合)、その値を二重引用符で囲む必要があります。
VBA を学ぶ最良の方法
ここでは、すぐに VBA を学ぶのに役立つ、最も素晴らしいチュートリアルをいくつかリストしました (特定の順序ではありません)。
- 便利な Excel [VBA] マクロ コード例トップ 100
- VBA を使用して Excel でユーザー定義関数 [UDF] を作成する方法
- VBA の面接での質問
1. VBA を始める
- 「開発者」タブを追加する
- Visual Basic エディター
- VBAでコメントを追加する
- VBA コードに改行を追加する
- 新しい行を追加します (キャリッジリターン)
- Excelでマクロを実行する
- パーソナル マクロ ワークブック (personal.xlsb)
- Excelでマクロを記録する
- VBA 出力サブステートメント
- VBA イミディエイト ウィンドウ (Debug.Print)
- VBAモジュール
- VBA メッセージ ボックス (MsgBox)
- VBA オブジェクト
- 宣言付き VBA
2. VBA でワークブックを操作する
- VBA ワークブック オブジェクトについて
- VBAを使用してExcelファイル(ワークブック)をコピーする
- ワークブック(Excelファイル)をアクティブ化する
- ブック(Excelファイル)を閉じます。
- ワークブック(Excelファイル)を結合する
- 新しいワークブック(Excelファイル)を作成します。
- ブック(Excelファイル)の削除
- ワークブック(Excelファイル)を開く
- ブック(Excelファイル)の保護/保護解除
- ワークブック(Excelファイル)の名前を変更します
- ワークブック(Excelファイル)を保存します。
- ThisWorkbook (現在の Excel ファイル)
3. スプレッドシートを使用する
- VBA で Excel スプレッドシートを操作する
- ExcelでVBAを使用してシート全体を消去する方法
- VBA を使用して Excel でシートをコピーおよび移動する方法
- ExcelでVBAを使用してシートをカウントする方法
- ExcelでVBAを使用してシートを削除する方法
- ExcelでVBAを使用してシートを非表示および表示する方法
- Excel で VBA を使用してシートを保護および保護解除する方法
- Excel で VBA を使用してシートの名前を変更する方法
- Excel で新しいシートを作成する VBA コードを記述する方法 (マクロ)
- VBAを使用してシートをアクティブ化する方法
4. 範囲とセルの操作
- VBA で範囲とセルを操作する
- Excel で VBA を使用して行を数える
- Excel VBA フォント (色、サイズ、種類、太字)
- Excel VBA 列または行の表示と非表示を切り替える
- ExcelでVBAを使用してセルに枠線を適用する方法
- Excel で VBA を使用して最後の行、列、セルを検索する方法
- ExcelでVBAを使用して行を挿入する方法
- VBA コードを使用して Excel でセルを結合する方法
- ExcelでVBAを使用して範囲/セルを選択する方法
- VBA を使用してワークシート内のすべてのセルを選択する方法
- ExcelのVBAでActiveCellを使用する方法
- ExcelのVBAで特殊セルメソッドを使用する方法
- Excel の VBA で UsedRange プロパティを使用する方法
- VBA 自動調整 (行、列、またはワークシート全体)
- VBA ClearContents (セル、範囲、またはワークシート全体から)
- VBA 範囲を別シート+ワークブックにコピー
- VBA セルに値を入力 (設定、取得、変更)
- VBA 列の挿入 (単一および複数)
- VBA | という名前の範囲(静的 + 選択 + 動的)
- VBA 範囲オフセット
- VBA ソート範囲 | (降順、複数列、ソート方向
- VBA テキストの折り返し (セル、範囲、ワークシート全体)
- VBAコードを使用してExcelで重複した値を強調表示する方法
- VBA UDFを使用してExcelでハイパーリンクアドレス(URL)を抽出する方法
5. 変数と定数
- VBA 変数 (宣言、データ型、スコープ)
- 定数VBA
- VBA でグローバル (パブリック) 変数を宣言する
- VBAで範囲またはセルを変数として使用する方法
- VBA で明示的なオプション ステートメントを使用する方法
- メッセージボックス内の変数
- Dim VBA 命令
6. カール
- VBAループ
- Excel VBA Do While ループおよび (Do Loop While) – ガイド
- Excel で VBA を使用してすべてのシートを循環する方法
- VBA を使用した範囲のループ (列、行、および UsedRange)
- VBA FOR LOOP (For Next、For Each) – ガイドと例
- GoTo VBA 宣言
7.条件
- VBA IF – IF then Else ステートメント
- ExcelでVBAを使用してシートが存在するかどうかを確認する方法
- VBA セルが空 + 複数のセルであるかどうかをチェックする
- VBA フォルダー内にブックが存在するかどうかを確認します (Excel ファイル)
- VBA ワークブックが開いているかどうかを確認します (Excel ファイル)
- VBA 終了 IF
- VBA IF And (複数条件テスト)
- VBA「いいえ」の場合
- VBA IF OR (複数のテスト条件)
- VBA のネストされた IF
- VBA SELECT CASE ステートメント (複数の条件をテスト)
8. 計算
- VBAを使用してExcelで値を平均する方法
- VBAを使用して今日の日付と現在時刻を取得する方法
- VBAを使用してExcelに値を追加する方法
- VBAでmatch関数を使う方法
- VBAでMODを使う方法
- 乱数
- VBA 計算 (セル、範囲、行、ワークブック)
- VBAを連結する
- VBA ワークシート関数 (マクロで Excel 関数を使用)
9. テーブル
- VBAテーブル
- VBA 配列に新しい値を追加します
- VBA配列の長さ(サイズ)
- 文字列を含む VBA 配列
- VBA 配列のクリア
- 動的テーブルVBA
- 配列内の VBA ループ
- 多次元配列 VBA
- VBA 範囲を配列に変換する
- VBA で配列内の値を検索する
- VBA出力テーブル
10. エラー
- VBAのエラー処理
- VBA オートメーション エラー (エラー 440)
- VBAエラー400
- 無効な VBA プロシージャ呼び出しまたは引数エラー (エラー 5)
- VBA オブジェクトはこのプロパティまたはメソッド エラーをサポートしていません (エラー 438)
- VBA オブジェクト必須エラー (エラー 424)
- VBA メモリ不足エラー (エラー 7)
- VBA オーバーフロー エラー (エラー 6)
- VBA ランタイム エラー (エラー 1004)
- VBA インデックス実行エラーが範囲外です (エラー 9)
- VBA タイプ非互換エラー (エラー 13)
11. 機能
- VBAの主な機能
- VBA ABS関数(絶対値取得)
- VBA配列関数
- VBA ATN 関数 (構文 + 例)
- VBA CBOOL 関数 (構文 + 例)
- VBA CBYTE 関数 (構文 + 例)
- VBA CCUR 関数 (構文 + 例)
- VBA CDATE 関数 (構文 + 例)
- VBA CDBL 関数 (構文 + 例)
- VBA CDEC 関数 (構文 + 例)
- VBA CHR 関数 (構文 + 例)
- VBA CINT 関数 (構文 + 例)
- VBA CLNG 関数 (構文 + 例)
- VBA COS 関数 (構文 + 例)
- VBA CSNG 関数 (構文 + 例)
- VBA CSTR 関数 (構文 + 例)
- VBA CVAR 関数 (構文 + 例)
- VBA CVERR 関数 (構文 + 例)
- VBA DATE 関数 (構文 + 例)
- VBA DATEADD 関数 (構文 + 例)
- VBA DATEPART 関数 (構文 + 例)
- VBA DATESERIAL 関数 (構文 + 例)
- VBA DATEVALUE 関数 (構文 + 例)
- VBA DAY 関数 (構文 + 例)
- VBA DDB 関数 (構文 + 例)
- VBA EXP 関数 (構文 + 例)
- VBA の FileDateTime 関数
- VBA FILTER 関数 (構文 + 例)
- VBA FIX関数(構文+例)
- VBA FORMAT 関数 (構文 + 例)
- VBA FORMATCURRENCY 関数 (構文 + 例)
- VBA FORMATDATETIME 関数 (構文 + 例)
- VBA FORMATNUMBER 関数 (構文 + 例)
- VBA FORMATPERCENT 関数 (構文 + 例)
- VBA FV 関数 (構文 + 例)
- VBA HEX 関数 (構文 + 例)
- VBA HOUR 関数 (構文 + 例)
- VBA IIF 関数 (構文 + 例)
- VBA INSTR 関数 (構文 + 例)
- VBA INSTRREV 関数 (構文 + 例)
- VBA INT 関数 (構文 + 例)
- VBA IPMT 関数 (構文 + 例)
- VBA IRR 関数 (構文 + 例)
- VBA ISARRAY 関数 (構文 + 例)
- VBA ISDATE 関数 (構文 + 例)
- VBA ISEMPTY 関数 (構文 + 例)
- VBA ISERROR 関数 (構文 + 例)
- VBA ISMISSING 関数 (構文 + 例)
- VBA ISNULL 関数 (構文 + 例)
- VBA ISNUMERIC 関数 (構文 + 例)
- VBA ISOBJECT 関数 (構文 + 例)
- VBA JOIN 関数 (構文 + 例)
- VBA LBOUND 関数 (構文 + 例)
- VBA LCASE 関数 (構文 + 例)
- VBA LEFT 関数 (構文 + 例)
- VBA LEN 関数 (構文 + 例)
- VBA LOG関数(構文+例)
- VBA LTRIM 関数 (構文 + 例)
- VBA MID 関数 (構文 + 例)
- VBA MINUTE 関数 (構文 + 例)
- VBA MIRR 関数 (構文 + 例)
- VBA MONTH 関数 (構文 + 例)
- VBA MONTHNAME 関数 (構文 + 例)
- VBA NOW 関数 (構文 + 例)
- VBA NPER 関数 (構文 + 例)
- VBA NPV 関数 (構文 + 例)
- VBA OCT 関数 (構文 + 例)
- VBA PMT関数(構文+例)
- VBA PPMT 関数 (構文 + 例)
- VBA PV 関数 (構文 + 例)
- VBA RATE 関数 (構文 + 例)
- VBA REPLACE 関数 (構文 + 例)
- VBA RIGHT 関数 (構文 + 例)
- VBA RND 関数 (構文 + 例)
- VBA ROUND 関数 (構文 + 例)
- VBA RTRIM 関数 (構文 + 例)
- VBA SECOND 関数 (構文 + 例)
- VBA SGN 関数 (構文 + 例)
- VBA SIN 関数 (構文 + 例)
- VBA SLN 関数 (構文 + 例)
- VBA SPACE 関数 (構文 + 例)
- VBA SPLIT 関数 (構文 + 例)
- VBA SQR 関数 (構文 + 例)
- VBA STR 関数 (構文 + 例)
- VBA STRCOMP 関数 (構文 + 例)
- VBA STRCONV 関数 (構文 + 例)
- VBA STRING 関数 (構文 + 例)
- VBA STRREVERSE 関数 (構文 + 例)
- VBA SYD 関数 (構文 + 例)
- VBA TAN 関数 (構文 + 例)
- VBA TIME 関数 (構文 + 例)
- VBA TIMER 関数 (構文 + 例)
- VBA TIMESERIAL 関数 (構文 + 例)
- VBA TIMEVALUE 関数 (構文 + 例)
- VBA TRIM 関数 (構文 + 例)
- VBA UBOUND 関数 (構文 + 例)
- VBA UCASE 関数 (構文 + 例)
- VBA VAL 関数 (構文 + 例)
- VBA WEEKDAY 関数 (構文 + 例)
- VBA WEEKDAYNAME 関数 (構文 + 例)
- VBA YEAR 関数 (構文 + 例)
12.その他
- VBAで入力ボックスを使用する方法
- VBA でテキスト ファイルを作成して書き込む
- VBA画面更新 |有効化および無効化する方法
- VBA ステータス バー (非表示、表示、進行状況)
- 一時停止および遅延するための VBA 待機およびスリープ コマンド
- VBA を使用して Excel でピボットテーブルを作成するためのステップバイステップ ガイド – マクロ コード
- VBAコードを使用してGoogleで検索する方法
- Excelにチェックボックスを挿入する方法