このページは当サイト内で掲載しているサンプルマクロを逆引き形式で掲載しています。リンク先からサンプルマクロとその実行結果、解説などを参照してください。
探したいキーワード(プロパティ、メソッド、ステートメントなど)がわかっている場合は ページ内検索(Ctrl + F)を利用することで目的のページを見つけることができます。
サンプルマクロのご利用方法
標準モジュールを追加する
サンプルマクロを標準モジュールに貼り付る
サンプル内の Sub ~ End Sub(Functionがある場合はそれも含む)をコピーして、標準モジュールに貼り付けてください。コピーの方法は、マウスでドラッグして選択後、Ctrl + C 押下、または、右クリックから コピー を選択します。この他、サンプルマクロ右上に Copy ボタンが設置してある場合にはそのボタンをクリックします。
マクロを実行する
マクロ起動用のボタンを設置する
サンプルマクロを取り込んだエクセルブックを保存する
基礎編
導入 ~ 制御構文編
- InputBox, MsgBoxを使用して九九を表示する
InputBox, MsgBox, Do…Loop, For…Next , IsNumeric - プロシージャ引数の参照渡し・値渡しを確認する
ByRef, ByVal - セル内での改行定数の表示を確認する
vbCr, vbLF, vbCrLf, Cells - MsgBox内での改行定数の表示を確認する
vbCr, vbLF, vbCrLf, MsgBox - 文字列を連結する
&演算子 - パターンマッチングで文字列を比較する
Like演算子 - If による複数の条件分岐
- Select Case による複数の条件分岐
- Select Case による複数の条件分岐(Isによる条件比較)
- Step節を使用したForループ(その1)
For…Next, Debug.Print - Step節を使用したForループ(その2)
For…Next, Debug.Print - Forループを途中で終了する
Exit For, Debug.Print - Doループでテキストファイルを読み込む
Do While, Dir, MsgBox, ThisWorkbook, テキストファイル読込 - Doループで数値の入力を受け付ける
Do…Loop Until, InputBox - Withを使用してセルのプロパティを複数設定する
With, セルのFontプロパティ, セルのInteriorプロパティ - 処理を直ちに終了する
Endステートメント, On Error Resume Next
セル・レンジ編
- Cellsと行・列番号によりセルを指定する
Cells, For…Next - Cellsとインデックスによりセルを指定する
Cells, For…Next, With - Rangeとアドレスによって複数のセルを指定する
Range, With, セルのFontプロパティ, セルのInteriorプロパティ - RangeとRangeによって範囲を指定する
Range, With, セルのFontプロパティ, セルのInteriorプロパティ - Rows や Columns を使用した範囲指定
Rows, RowHeight, Columns, RowHeight - あるセルを含む行・列で指定する
EntireRow, EntireColumn - 基準セルからのオフセットで指定する
セルのOffsetプロパティ - 空白行と空白列で囲まれた領域
CurrentRegion - セルにA1形式の数式を設定する
Formula - セルにR1C1形式の数式を設定する
FormulaR1C1 - セルに数値・その他の表示形式を設定する
NumberFormatLocal - セルに日付・時刻の表示形式を設定する
NumberFormatLocal - セルの配置に関するプロパティを設定する
HorizontalAlignment, IndentLevel, AddIndent, VerticalAlignment, WrapText, ShrinkToFit, MergeCells, Orientation, ReadingOrder - セルの文字折り返し、縮小して全体表示を設定する
WrapText, ShrinkToFit - 複数のセルを結合・解除する
MergeCells - セルの結合範囲を取得する
MergeArea - セルのフォントに関するプロパティを設定する
Font.Name, Font.FontStyle, Font.Size, Font.Underline, Font.Color, Font.Strikethrough, Font.Superscript, Font.Subscript - セルのフォントスタイルを設定する
Font.FontStyle, Font.Bold, Font.Italic - セルの値に下線を設定する
Font.Underline - セルの値に取消線、上付き文字、下付き文字を設定する
Font.Strikethrough, Font.Superscript, Font.Subscript - セル文字列内の特定キーワードを部分的に着色する
Characters, InStr, Do Until…Loop, With - セルの罫線を設定する
Borders.LineStyle Borders.Weight, Borders.Color - セルの背景色・パターンを設定する
Interiorプロパティ - セルの背景色・パターンをクリアする
Interiorプロパティ - カラーパレットの一覧をリストアップする
Interiorプロパティ - セルに色付きのパターンを設定する
Interiorプロパティ - セルに線形グラデーションを設定する
Interior.Pattern, Interior.Gradientプロパティ - セルに四角形グラデーションを設定する
Interior.Pattern, Interior.Gradientプロパティ - セルを保護する
Lockedプロパティ, シートのProtect, Unprotectメソッド - セルの数式を非表示にする
Locked, FormulaHiddenプロパティ, シートのProtectメソッド - セルのコメントを追加・削除する
AddComment, Comment.Deleteメソッド, Comment.Textプロパティ - セルの値・数式・書式・コメントをクリアする
Clear, ClearContents, ClearFormats, ClearCommentsメソッド - セルをコピーする
Copyメソッド - コピーしたセルの書式のみを貼り付ける
PasteSpcialメソッド - セルを挿入する
Insertメソッド - コピーしたセルを挿入する
Insertメソッド - セルを削除する
Deleteメソッド - 条件付き書式のセルを抽出する
SpecialCells(xlCellTypeAllFormatConditions)メソッド - 入力規則のセルを抽出する
SpecialCells(xlCellTypeAllValidation)メソッド - ブランクセルを抽出する
SpecialCells(xlCellTypeBlanks)メソッド - コメントセルを抽出する
SpecialCells(xlCellTypeComments)メソッド - 定数セルを抽出する
SpecialCells(xlCellTypeConstants)メソッド - 数式セルを抽出する
SpecialCells(xlCellTypeFormulas)メソッド - 固定範囲のソート
Sortメソッド - 可変範囲のソート
Sortメソッド, Endプロパティ - UsedRangeで取得した範囲をソート
Sortメソッド, UsedRangeプロパティ - シート内でキーワードに部分一致するセルを検索して洗い出す
Findメソッド, UsedRangeプロパティ, InputBox, MsgBox, Do…Loop - セルの終端を取得する
Endプロパティ - オートフィルタを表示してからセルの終端を取得する
Endプロパティ, AutoFilter.ShowAllDataメソッド - オートフィルタを使用する
AutoFilterメソッド, ワークシートAutoFilterModeプロパティ - 行・列を表示にする。非表示の状態を取得する。
Hiddenプロパティ - 行・列の非表示を解除する
Hiddenプロパティ
ワークシート編
- For Eachループでワークシート名をすべて列挙する
Worksheetsコレクション, For Each…Next - Forループでワークシート名をすべて列挙する
Countプロパティ, For…Next - 最後尾のワークシート名を表示する
Countプロパティ - ワークシートを複数枚追加する
Addメソッド - ワークシートを追加するのと同時にシート名を変更する
Addメソッド, Setステートメント, Withステートメント - ワークシートをシート名で指定する
- ワークシートをインデックスで指定する
- シート名のチェックをしてからワークシートを追加する
Nameプロパティ, Addメソッド, InputBox, MsgBox, Array, UBound, InStr, Len - シート追加前後のインデックスを表示する
Addメソッド, For…Next, Withステートメント - ワークシートを非表示にする(手動で再表示可)
Visibleプロパティ - ワークシートを非表示にする(手動で再表示不可)
Visibleプロパティ - オートフィルタの設定有無を判定後にオートフィルタを設定する
AutoFilterModeプロパティ, セルのAutoFilterメソッド, Withステートメント - オートフィルタを解除する
AutoFilterModeプロパティ - 使用済みセルに背景色を設定する
UsedRangeプロパティ, セルのInteriorプロパティ - ワークシート内のコメントセル数とそのアドレスを表示する
Commentsプロパティ - ワークシートをアクティブにする
Activeメソッド - ワークシートをコピーする
Copyメソッド, Countプロパティ, Nameプロパティ - ワークシートを新規ブックへコピーする
Copyメソッド, Nameプロパティ - ワークシートを移動する
Moveメソッド, Countプロパティ - ワークシートを新規ブックへ移動する
Moveメソッド - ワークシートを削除する
Deleteメソッド, Application.DisplayAlertsプロパティ - ワークシート1枚の印刷プレビューを表示する
PrintPreviewメソッド, 印刷ヘッダー・フッター・用紙サイズ - 全ワークシートの印刷プレビューを表示する
PrintPreviewメソッド - 複数ワークシートの印刷プレビューを表示する
PrintPreviewメソッド, Selectメソッド, Array - ワークシート1枚を印刷する
PrintOutメソッド, 印刷ヘッダー・フッター・用紙サイズ - 全ワークシートを印刷する
PrintOutメソッド - 複数ワークシートを印刷する
PrintOutメソッド, Selectメソッド, Array - ページ指定した印刷プレビューを表示する
PrintOutメソッド - 印刷ヘッダー・フッターに文言を設定する
PageSetupプロパティ, PrintPreviewメソッド, Withステートメント - 印刷ヘッダーに複数のフォントとフォントサイズを設定する
PageSetupプロパティ, PrintPreviewメソッド, Withステートメント - 印刷ヘッダーに日付と時刻を設定する
PageSetupプロパティ, PrintPreviewメソッド, Withステートメント - 印刷フッターにページを設定する
PageSetupプロパティ, PrintPreviewメソッド, Withステートメント
ワークブック編
- ワークブック名をすべて列挙する
Countプロパティ, For…Next - シート枚数の設定を変更して新規ブックを追加する
Addメソッド, Application.SheetsInNewWorkbook - シート1枚の新規ブックを追加する
Addメソッド - 一連のチェックをしてからワークブックを開く
Openメソッド, Countプロパティ, ThisWorkbook,
For…Next, Exitステートメント, MsgBox関数, Dir関数 - ThisWorkbookの名前・パスを表示する
Name, Path, FullNameプロパティ - ワークブックをアクティブにする
Activateメソッド - ワークブックを保存せずに閉じる
Closeメソッド, Withステートメント - ワークブックを保存して閉じる
Closeメソッド, Withステートメント - ワークブックを別名で保存して閉じる
Closeメソッド, Withステートメント, InStrRev関数, Left関数, Mid関数 - ワークブックを保存する
Saveメソッド - 新規追加したワークブックを保存する
Saveメソッド, ThisWorkbook, Withステートメント
テキストファイル入出力編
- テキストファイル(CSV形式)を1行ずつ読み込む(その1)
Open, Line Input#, Closeステートメント, セル表示形式, ThisWorkbook, FreeFile関数, Split関数, UBound関数, For…Next, Do…Loop, Withステートメント - テキストファイル(CSV形式)を1行ずつ読み込む(その2)
Open, Input#, Closeステートメント, セル表示形式, FreeFile関数, For…Next, Do…Loop, Withステートメント - テキストファイル(CSV形式)を新規作成する(その1)
Open, Print#, Closeステートメント, ThisWorkbook, FreeFile関数, Join関数, データ型変換, 配列の宣言, For…Next, Withステートメント - テキストファイル(CSV形式)を新規作成する(その2)
Open, Write#, Closeステートメント, ThisWorkbook, FreeFile関数, データ型変換, For…Next, Withステートメント - テキストファイル(CSV形式)へ追加書き込みする
Open, Print#, Closeステートメント, ThisWorkbook, FreeFile関数, Join関数, 配列の宣言
関数リファレンス編
組込ダイアログ編
- InputBox関数のダイアログにデフォルト値を表示する
InputBox関数 - InputBox関数の入力により処理を分岐させる
InputBox関数, MsgBox関数, If…ElseIf - Application.InputBoxで入力タイプを限定した入力ダイアログを表示させる
Application.InputBoxメソッド - Application.InputBoxで数値のみを受け付ける入力ダイアログを表示させる
Application.InputBoxメソッド, MsgBox関数, TypeName関数 - Application.InputBoxでセル参照を受け付ける入力ダイアログを表示させる
Application.InputBoxメソッド, Setステートメント, On Errorステートメント,
For Each…Next, MsgBox関数 - MsgBox関数のボタンに複数のグループを設定する
MsgBox関数, Endステートメント - ファイルダイアログオブジェクトを使用して『ファイルを選択する』
Application.FileDialog, MsgBox関数, For…Next, Withステートメント - ファイルダイアログオブジェクトを使用して『フォルダを選択する』
Application.FileDialog, MsgBox関数, Withステートメント - ファイルダイアログオブジェクトを使用して『エクセルファイルを開く』
Application.FileDialog, MsgBox関数, For…Next, Withステートメント - ファイルダイアログオブジェクトを使用して『エクセルファイルを保存する』
Application.FileDialog, MsgBox関数, Withステートメント
文字列操作編
- Left関数により左端から文字列を抽出する
- Right関数により右端から文字列を抽出する
- Mid関数により任意の位置から文字列を抽出する
- Len関数により文字列の文字数と変数のバイト数を取得する
- LenB関数により文字列を半角1バイト、全角2バイトとしてカウントする
- LCase、UCase関数によりアルファベットの大文字・小文字を変換する
- StrConv関数により文字列を各種変換(大文字・小文字、半角・全角など)する
- StrReverse関数により文字列を反転させる
- Replace関数により文字列の置換・削除を行う
- InStr関数による文字列検索例
- InStr関数によりキーワードの出現回数をカウントする
- InStrRev関数による検索例
- Trim関数とReplace関数により文字列内の空白を削除する
- Format関数により数値のゼロ埋め処理をする
- Format関数により大文字・小文字を変換する
- Format関数により日付の書式を変換する
- Asc、Chr関数により連続する文字コードの文字列を取得する
- String関数によりある文字を指定の回数繰り返した文字列を取得する
- Space関数によりある空白を指定の回数繰り返して取得する
- StrComp関数により文字列をテキストモードで比較する
日付・時刻編
- 日付、時刻を取得する
- Date関数とループ処理で連続した日付を取得する
- 日付から年・月・日を取得する
- 時刻から時・分・秒を取得する
- Weekday関数により曜日に対応する数値を取得する
- WeekdayName関数により曜日(数値)に対応する曜日(文字列)を取得する
- DateValue関数により日付を表す文字列からDate型へ変換する
- TimeValue関数により時刻を表す文字列からDate型へ変換する
- DateSerial関数により年月日を指定してDate型を取得する
- DateSerial関数によりある年の月末日付をすべて取得する
- TimeSerial関数により時分秒を指定してDate型を取得する
- DatePart関数により四半期、通算日、週を取得する
- DateDiff関数により日付の差分をさまざまな形式で表示する
- Timer関数により処理時間を計測する
配列関連~データ型検査~数学関連
- Array関数により1次元配列を作成する
- 多次元配列の添え字上限・下限を調べる
- Split関数によりCSV形式の文字列を分割する
- CSVファイル内の数値を2倍にする
- Join関数により配列内の文字列を結合する
- Str関数により整数の符号スペースを確保して表示する
- IsDate関数により日付のチェックをする
- IsNumeric関数により数値のチェックをする
- IsArray関数により変数が配列かチェックをする
- IsEmpty関数により変数がEmptyかチェックをする
- TypeName関数により変数のデータ型を取得する
- Int、Fix関数により小数点を切り捨てる
- Round関数により小数点を丸める
- Abs関数により数値の絶対値を取得する
- 毎回同じ乱数を生成する
- 毎回異なる乱数を生成する
- Sqr関数により平方根を取得する
- 三角関数(Sin、Cos、Tan)を使用する
ファイル・フォルダ操作編
- Dir関数によりファイルの存在をチェックする
- Dir関数によりフォルダの存在をチェックする
- Dir関数によりパターンにマッチするファイルを取得する
- Dir関数によりファイル・サブフォルダの一覧を取得する
- Dir関数によりファイル・サブフォルダの一覧を取得する(改良版)
- CurDir関数によりカレントフォルダを取得する
- FreeFile関数により空いているファイル番号を取得する
- テキストファイルを読み込む際にEOFでファイルの終わりを判定する
- カレントフォルダやドライブを変更する
- Nameステートメントによりファイル移動と名前変更をする
- Nameステートメントによりフォルダ名を変更する
- FileCopyステートメントによりファイルをコピーする
- Killステートメントでファイルを削除する
- MkDirステートメントによりフォルダを作成する
- RmDirステートメントによりフォルダを削除する
- FileLen、LOF関数によりファイルサイズを取得する。
ファイルシステムオブジェクト編
- ファイルのパス情報を表示する
fso.FileExists, fso.GetBaseName, fso.GetExtensionName, fso.GetFileName, fso.GetParentFolderName, fso.GetDriveName - カレントフォルダ内のファイル情報をシートに表示する
fso.GetFolder, folder.Files, file.Name, file.DateLastModified, file.Size, file.Attributes
ファイル操作編
- fso.MoveFileにより1つのファイルを移動する
fso.MoveFile - fso.MoveFileにより1つのファイルを移動する(ファイル名も変更)
fso.MoveFile - fso.MoveFileにより複数のファイルを1命令で移動する
fso.MoveFile - file.Moveにより1つのファイルを移動する
file.Move - file.Moveにより1つのファイルを移動する(ファイル名も変更)
file.Move, fso.GetFile - file.Moveによりフォルダ内の複数ファイルを1つずつ移動する
file.Move, fso.GetFolder, For Each…Next, Like演算子 - fso.CopyFileにより1つのファイルをコピーする
fso.CopyFile - fso.CopyFileにより1つのファイルをコピーする(ファイル名も変更)
fso.CopyFile - fso.CopyFileにより複数のファイルを1命令でコピーする
fso.CopyFile - file.Copyにより1つのファイルをコピーする
file.Copy, fso.GetFile - file.Copyにより1つのファイルをコピーする(ファイル名も変更)
file.Copy, fso.GetFile - file.Copyによりフォルダ内の複数ファイルを1つずつコピーする
file.Copy, fso.GetFolder, For Each…Next, Like演算子 - fso.DeleteFileにより1つのファイルを削除する
fso.DeleteFile - fso.DeleteFileにより複数のファイルを1命令で削除する
fso.DeleteFile - file.Deleteにより1つのファイルを削除する
file.Delete, fso.GetFile - file.Deleteによりフォルダ内の複数ファイルを1つずつ削除する
file.Delete, fso.GetFolder, For Each…Next, Like演算子 - fso.CreateTextFileによりテキストファイルを出力する
fso.CreateTextFile, For …Next, Withステートメント - folder.CreateTextFileによりテキストファイルを出力する
folder.CreateTextFile, fso.GetFolder, For Each…Next, Withステートメント, Like演算子, Format関数 - fso.OpenTextFileによりテキストファイルを読み込む1
fso.OpenTextFile, Do…Loop, Withステートメント - fso.OpenTextFileによりテキストファイルを読み込む2
fso.OpenTextFile, Do…Loop, Withステートメント - fso.OpenTextFileによりテキストファイルへ追加書込する
fso.OpenTextFile, Withステートメント - file.OpenAsTextStreamによりテキストファイルを読み込む
file.OpenAsTextStream, fso.GetFolder, For Each…Next, Do…Loop, Withステートメント, Like演算子, LCase関数 - file.OpenAsTextStreamによりテキストファイルへ追加書込する
file.OpenAsTextStream, fso.GetFolder, For Each…Next, Withステートメント, Like演算子, LCase関数, StrComp関数
フォルダ操作編
- フォルダのパス情報を表示する
fso.FolderExists, fso.GetParentFolderName, fso.GetDriveName - カレントフォルダ内のサブフォルダ情報をシートに表示する
fso.GetFolder, folder.SubFolders, folder.Name, folder.DateLastModified, folder.Size, folder.Attributes - fso.MoveFolderにより1つのフォルダを移動する
fso.MoveFolder - fso.MoveFolderにより1つのフォルダを移動する(フォルダ名も変更)
fso.MoveFolder - fso.MoveFolderにより複数のフォルダを1命令で移動する
fso.MoveFolder - folder.Moveにより1つのフォルダを移動する
folder.Move, fso.GetFolder - folder.Moveにより1つのフォルダを移動する(フォルダ名も変更)
folder.Move, fso.GetFolder - folder.Moveによりフォルダ内のサブフォルダを1つずつ移動する
folder.Move, fso.GetFolder, For Each…Next, Like演算子 - fso.CopyFolderにより1つのフォルダをコピーする
fso.CopyFolder - fso.CopyFolderにより1つのフォルダをコピーする(フォルダ名も変更)
fso.CopyFolder - fso.CopyFolderにより複数のフォルダを1命令でコピーする
fso.CopyFolder - folder.Copyにより1つのフォルダをコピーする
folder.Copy, fso.GetFolder - folder.Copyにより1つのフォルダをコピーする(フォルダ名も変更)
folder.Copy, fso.GetFolder - folder.Copyによりフォルダ内のサブフォルダを1つずつコピーする
folder.Copy, fso.GetFolder, For Each…Next, Like演算子 - fso.DeleteFolderにより1つのフォルダを削除する
fso.DeleteFolder - fso.DeleteFolderにより複数のフォルダを1命令で削除する
fso.DeleteFolder - folder.Deleteにより1つのフォルダを削除する
folder.Delete, fso.GetFolder - folder.Deleteによりフォルダ内のサブフォルダを1つずつ削除する
folder.Delete, fso.GetFolder, For Each…Next, Like演算子
ドライブ操作編
- すべてのドライブ名とそのタイプを表示する
fso.Drives, drive.DriveLetter, drive.DriveType, For Each…Next, Withステートメント - すべてのドライブ名とその容量などを一覧表示する例
fso.Drives, drive.DriveLetter, drive.DriveType, drive.IsReady, drive.TotalSize, drive.FreeSpace, For Each…Next, Withステートメント, Round関数
ディクショナリオブジェクト編
- ディクショナリオブジェクトを使用した社員番号照会ツール
dco.Add, dco.Count, dco.Exists, dco.Item, Do…Loop, Withステートメント, InputBox関数, MsgBox関数, Join関数 - ディクショナリオブジェクトを使用した重複データの削除
dco.Add, dco.Count, dco.Exists, dco.Item, Do…Loop, For…Next, MsgBox関数, UBound関数, Join関数 - ディクショナリオブジェクトを使用した複数項目の集計(1)
dco.Add, dco.Exists, dco.Item, Do…Loop, For Each…Next, UBound関数, データ型変換 - ディクショナリオブジェクトを使用した複数項目の集計(2)
dco.Add, dco.Exists, dco.Item, Do…Loop, For Each…Next, Array関数, UBound関数, データ型変換
ワークシート関数編
- Sum関数により合計を求める
- SumIf関数により条件付き合計を求める(1)
- SumIf関数により条件付き合計を求める(2)
- SumIfs関数により複数条件付き合計を求める
- さまざまなセルのカウント (Count、CountA、CountBlank)
- 条件付きのカウント (CountIf)
- 複数条件付きのカウント (CountIfs)
- 単一レンジ範囲内の最大・最小値 (Max, Min)
- 複数レンジ範囲内の最大・最小値 (Max, Min)
- Subtotal関数による集計処理
- Match関数による完全一致検索
Match関数, Do…Loop, On Errorステートメント, InputBox関数, MsgBox関数 - VLookup関数による完全一致検索
VLookup関数, Do…Loop, On Errorステートメント, InputBox関数, MsgBox関数 - VLookup関数による近似値検索
VLookup関数, Do…Loop, On Errorステートメント, InputBox関数, MsgBox関数, Split関数, UBound関数 - Rank関数により順位を取得する
Rank関数, For…Each Next - Large、Small関数により順位に対応する値を取得する
Large, Small関数, For…Next