目次
マクロで出来ること
Excel に搭載されている「マクロ」という機能を使用すれば、手作業で繰り返し行っている Excel の作業を半自動化くらいまではできるようです。マクロの中身は命令文が書いてある文字でできていて、その命令文は「Excel VBA」の仕様で書かなければならないようです。
私の使用している Excel のバージョンは 2003 なので、画面表示の具合など色々と違うところもあると思います。
セル操作
セルの操作はよく使用すると思います。単一セル、複数セル、行、列など色々なパターンを覚えて行きたいと思います。
変数にセル範囲を代入して、変数の中身を見てみる。
単一セルを選択する。
複数セルを選択する。
セル範囲を選択する。
連続するデータの範囲を選択する。
基準セルから見たデータの上端、下端、左端、右端を選択する。
ExcelVBA で「名前の定義」を設定して、 RefersToRange プロパティで定義済み範囲を取得する。
ワークシートで使用されているセル範囲を取得する。 UsedRange プロパティ使用。
Excel VBA でデータ終端行を取得する。 End(xlDown) 使用。
Excel VBA でデータ終端行を取得する。 End(xlUp) 使用。
Excel VBA でデータ終端行を取得する。 UsedRange プロパティ使用
Excel VBA 。セル範囲を文字列として取得できる Address プロパティ。
Excel VBA でセルの共有範囲を取得可能な Intersect メソッド。
現在表示されているセル範囲を取得する。
ウィンドウ枠の固定表示を行っている場合の VisibleRange プロパティの取得方法
値が違うセルをセル範囲として取得出来る RowDifferences メソッド。
Excel VBA でセル範囲を変数に格納して、同じセル範囲を何度も使用する方法。
Range オブジェクトの Item プロパティにインデックス番号を指定した結果を見てみるマクロ。
Cells プロパティでセル範囲を指定する方法。
Excel VBA で複数のセル範囲をまとめて操作したい場合に便利な Union メソッド。
Excel VBA。 Intersect メソッドで表の行列の見出し以外の中身のデータを一括操作。
A 列のカンマ( , )区切りの文字列を B 列以降に分割して出力出来る TextToColumns メソッド。
セルの文字、数式を削除する。
ワークシート内の全てのセルの値、書式を消去。
セルをコピーして貼り付ける。
セルのフォントを変更する。
セルの文字色を変更する。
セルの結合と解除。
セルの Width と Height。
行列操作
Excel VBA の Row , Column プロパティで行番号、列番号を取得する。
Excel VBA でセル範囲の行数・列数をカウントできる Rows , Columns プロパティ。
行を選択する。
列を選択する。
ExcelVBA の EntireRow プロパティで指定セルを含む行を選択する。
ExcelVBA の EntireColumn プロパティで指定セルを含む列を選択する。
ExcelVBA で行を削除したい。 Rows().Delete 使用。
ExcelVBA で列を削除したい。 Columns().Delete 使用。
ExcelVBA で連続する範囲の行を削除する方法。
ExcelVBA で連続する列を削除したい。
Excel マクロで連続していない複数行を一括で削除したい。
連続していない複数列を一括削除。
セルの列幅と行高。
行、列を非表示にする。再表示する。
ワークシート操作
ワークシートの名前を取得する。
ワークシートの名前を設定する。
ワークシートを新規作成する。
ワークシートを同じワークブック内にコピーする。
コピーしたワークシートのみが存在する新規ワークブックを作成する。
ワークシートを削除する。
ワークブック操作
開いているワークブックの名前を取得する。
新規ワークブック作成直後、未保存の状態で、 ThisWorkbook.Path , ActiveWorkbook.Path を取得すると空白 "" が返ってくるようです。
ActiveWorkbook と ThisWorkbook の違い。
別ブックを読み取り専用で開いて、値を取得して閉じる。
ウィンドウ操作
ワークシートの表示倍率を変更する。 Zoom プロパティ使用。
選択範囲をズームする。 Zoom プロパティ使用。
挿入した図、画像にズームする。
ワークシートの指定行まで画面をスクロールする。
ワークシートの指定列まで画面をスクロールする。
Excel 自体操作
Excel アプリの初期設定を変更する事も出来ます。
繰り返し処理
回数、個数、条件などを指定して、同じ処理を繰り返し行うことができるようです。このような繰り返し構造のことをループ処理とも呼ぶようです。
例えば、 10 回の繰り返し処理、 10 個のセルを繰り返し処理、条件に一致する間(合計が 10 になるまで)の繰り返し処理などを行えるようです。
複数ワークブックのループ処理を行い、セル値の取得・設定を行う。
ワークシートのループ処理を行い、セルの値を取得・設定したい。集計したい。
ワークシートの指定範囲をループしてセルの値を取得・設定する。
ワークシートの指定範囲をループしてセルの値を取得・設定する。 For Each 使用。
一ずつ増えていくループと一ずつ減っていくループ。
A 列をループしている途中で B,C 列など別の列の値を取得する。
関数使用
画面にメッセージを表示する。 VBA の MsgBox 関数。
VBA の Msgbox 関数の操作結果を取得して処理を分岐する。
ワークシート関数の row と column を使用して連番を入力する。
ユーザー定義関数でフォント名とフォントサイズを取得する。
使用上の違いは分かりませんでしたが、 VBA の「Left」関数とドル記号 $ の付いた「Left$」関数はオブジェクトブラウザで見ると違いがあるようです。
Error 関数で「エラー番号」と「エラーメッセージ」の一覧を見てみる。
VBA の Array 関数で配列作成。
Excel VBA で行列を入れ替える事の出来る Transpose 関数。
縦並びデータ限定ですが、セル範囲から一次元配列を作成可能な Transpose 関数。
Format 関数。数字の 3 桁区切り(1,000)、ハイフン区切り(010-0100)、桁数固定(0001)、小数点以下桁数固定(1.000)。
Visual Basic Editer
Visual Basic Editer(略称 VBE)は、 Excel 上で動作する別アプリケーション、それか、ツールのようなもので、 Excel マクロの新規作成、削除、編集、エクスポート、インポートなどを行うことができるようです。
Excel 内で動作する Visual Basic Editor ( VBE ) でできること。
条件に一致した時にマクロを中断できる VBE のウォッチ式。
VBE(Visual Basic Editor)のデバッグメニューの中にあるステップイン、ステップオーバー、ステップアウトの動作の違い。
画面に文字を表示する(VBE のイミディエイトウィンドウ)
途中で役に立つかもしれない情報
ExcelVBA の Selection プロパティが返すオブジェクトの種類を調べてみました。
Excel VBA の変数宣言で変数名の後ろに付いている、アンド(&)、ドル($)記号の意味。
ExcelVBA で変数の宣言を強制したい。
ExcelVBA でダブルクオーテーション( ” の記号)を文字として出力したい。
Excel の色の一覧(カラーパレット)をワークシート上に表示するマクロを作成してみました。
VBA の SendKeys ステートメントのテスト。
SendKeys と SendKeys の間に SendKeys 以外の VBA の処理を挟むマクロ。
vbRed(赤)、vbGreen(緑)、vbBlue(青)など、色の名前で直接的に色指定可能な VBA 組み込みの「色」の定数を使用したマクロ。
VBA の & (アンド)の記号の用途。
VBA の 円記号 ¥ は割り算の整数(余りではない方)を返すという意味があるようです。
文字列を連結した文字列から配列を作成するマクロを作成してみました。
配列のテストとして、既存のマクロを、配列を使用したマクロに書き換えてみました。
ブレークポイント(F9 キー)の代用で Debug.Assert 使用。
Excel の VBA ・マクロでできること。何が出来る?
Alt+F8 のショートカットキーから Excel マクロを実行する。 Excel 2003 の場合。
アンダーバー「_」と改行を続けて書く意味。
センチ(cm)、インチ(inch)をポイント(point)に変換。
"=A1" を R1C1 形式に変換。"=R1C1" を A1 形式に変換。
[A1] のようにセルアドレスを角かっこで囲んで記述するとセルを指定できるようです。
Undo(元に戻す Ctrl+Z)と Repeat(繰り返し Ctrl+Y)。Repeat は思い通りの処理になりませんでした。
最後に実行したマクロ名を文字列として記録しておいて Application.Run で再実行する。
ワークシートにボタンを挿入して、そのボタンにマクロを登録するマクロ。
配列を作成して中身を見てみる。
Dir 関数でパソコン内のファイルを検索する。
フォルダ作成 MkDir、フォルダ削除 RmDir、ファイル削除 Kill。
オートフィルタを掛けてみる。
何かができない場合
値を取得、設定できないなど、思い通りの何かができない時の原因を考えてみました。
Excel VBA の ActiveWorkbook.Path が空白で返ってきて取得できない。
Excel VBA の Select メソッドを実行するとエラー「1004」が発生してしまう。
Windows11( 64 ビット環境)と ExcelVBA の組み合わせでキャレットの記号(^)でべき乗、累乗しようとするとコンパイルエラーが発生してしまう。
VBAで「実行時エラー ‘-2147024156(800702e4)’: 要求された操作には管理者特権が必要です。」が発生してしまう。
VBE 画面で SendKeys を実行すると、コードペインに文字が出力されてしまう。
Microsoft® Excel® for Microsoft 365 には「ツール > マクロ > マクロ」のメニューがないようです
マクロでエラーが発生しても処理を継続できる「On Error Resume Next」の記述。
マクロのエラー処理を無効にする「On Error GoTo 0 (ゼロ) 」の記述。
エラーの発生が予想出来る設定値を指定して、エラーが発生しない設定値の範囲を絞り込むテスト。