エクセルの神髄VBAサンプル集:そのまま使える実用マクロ集
ExcelマクロVBAの実用的なサンプル集として、なるべくそのまま使えるようにVBAコードを書いています。VBAコードの細部についての技術的な解説は少なめになっています。技術的な解説は、以下をご覧ください。
・「マクロ」と「VBA」の違いについて ・このシリーズで、何が学べるの?(対応範囲について) ・VBA入門のページ内目次 ・「VBA入門」シリーズ学習の進め方 ・1. VBAの基礎・基本:VBA入門 ・2. VBA入門に必要なVBEの基本的使い方 ・3. VBAプログラミングの基礎・基本 ・4. Excel各種機能とオブジェクトの理解:VBA入門 ・5. VBA初級からVBA中級を目指して ・6. VBA入門の後日追加記事 ・7. VBA入門その後の学習について ・「VBA入門」の記事を学校の授業もしくは企業研修でお使いになる場合
マクロVBA技術解説・プログラミング全般:マクロVBA技術解説 ・VBA入門編:マクロVBA技術解説 ・VBA応用編:マクロVBA技術解説 ・VBAの制限とエラー対応:マクロVBA技術解説 ・処理速度対策と配列:マクロVBA技術解説 ・イベント:マクロVBA技術解説 ・Excel Application外のオブジェクト:マクロVBA技術解説
VBAサンプル集として「そのまま使えるVBAコード」とは言え、全ての環境においてそのままで実行可能であるとは限りません。 PC環境やExcelのバージョンによってはエラーや実行結果が違ってくることもありえます。 あくまで掲載時点で特定環境において動作確認したものになりますので、実行環境により修正が必要になる場合もあります。 決して製品版の販売ではありません、あくまでサンプルVBAであることは承知おきください。
ブック・シート:マクロVBAサンプル集 連続セル範囲の選択・End(xlToRight).End(xlDown) ・CurrentRegion.Offset(1, 0) ・CurrentRegion.Offset(1, 0).Resize ・CurrentRegion.Item + CurrentRegion.Count ・End(xlUp).Row + End(xlToLeft) ・Rowsで行全体を対象に ・UsedRange + UsedRange.Count ・SpecialCells(xlLastCell) ・Intersect + CurrentRegion.Offset(1, 0) ・連続セル範囲の選択のまとめ
1行置きにする行挿入(Insert)A列に連続データが入っているとします。これを1行置きにします。ポイントは下から行うことです。上からやると、どんどん下に追いやられてしまいます。(Step2とするのもありですが、普通は下からやりましょう) Cells(Rows.Count,1).End(xlUp).Row これで、最終行を取得しています。
シートの追加・削除(Add,Delete) ・シートの追加・削除のVBA ・オブジェクト変数を使用したシートの追加・削除のVBA ・Withステートメントを使用したシートの追加・削除のVBA シートの複数選択(Select) ・マクロの記録と同じようにArrayに固定文字で ・シート名の配列を作成する ・シートのSelectメソッドの引数にFalseを指定する ・全シートを選択するだけなら 複数シートの印刷(PrintOut) ・マクロの記録と同じようにArrayに固定文字で ・シートを順次印刷していく ・シート名の配列を作成して一括で印刷する ・Worksheet.Selectメソッド ・全てのシートを印刷するなら 重複削除してコピー(AdvancedFilter) ブックを安全確実に開く方法(Open) ブックを閉じる(Close)ブックを閉じる時の処理方法です。まずは、保存して閉じる場合。これは、次のように書くこともできます。Subsample2()ThisWorkbook.CloseSaveChanges:=TrueEnd Sub では、保存しないで閉じる場合。
他ブックを開いて閉じる(Open,Close)・パターン1:ActiveWorkbook ・パターン2:Workbooks.Count ・パターン3:オブジェクト変数 ・パターン4:Withステートメント ・パターン5:オブジェクト変数+Withステートメント ・開いているブックをブック名で検索し閉じる場合
ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)・ExecuteExcel4Macroで1個のセル値を取得 ・Excel.Applicationで1個のセル値を取得 ・ExecuteExcel4Macroで100個のセル値を取得 ・Excel.Applicationで100個のセル値を取得 ・Excel.Applicationで100個のセル値を取得2 ・ブックを開かずにセル値を取得
罫線を簡単に引く(Borders,BorderAround) マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ ・マクロVBA開始時 ・マクロVBA終了時 ・Applicationのプロパティ解説 ・マクロが途中で終了した場合 オートフィルター(AutoFilter) 日付のオートフィルタ(AutoFilter) 印刷ダイアログを使用する(xlDialogPrint) 名前定義の一覧と削除(Name) ・名前定義の一覧を取得し、シートに書き出すマクロVBA ・非表示の名前定義を表示 ・サイト内の関連ページ シートを名前順に並べ替える 数式内の不要なシート名を削除する(HasFormula) 数式の参照しているセルを取得する 増殖した条件付き書式を整理統合する・条件付き書式の増殖に関する、Microsoft サポート ・増殖した条件付き書式の実例と対応 ・簡単なVBAでの対応 ・VBAで条件付き書式を整理統合した結果 ・今回のVBAコードの発想について ・Application.ConvertFormulaメソッド ・増殖した条件付き書式を整理統合するVBA ・条件付き書式で設定できる書式 ・増殖した条件付き書式を整理統合するVBAの使い方 ・増殖した条件付き書式を整理統合の最後
条件付き書式で変更された書式を取得する セル結合/解除でセル値を退避/回復 ・セル結合/解除でセル値を退避/回復のVBA ・退避したセル値の全削除と一覧出力 ・セル結合/解除の最後に セル結合なんて絶対に許さないんだからね セル結合の弊害はネットに溢れているのでここで改めて説明の必要はないでしょう。とはいえ、ついついセル結合してしまう事ありますよね、人間だからね。VBAで適切に処理すればセル結合もきちんと処理は可能です。 セルの数式をネスト色分けしてコメント表示 ・セルの数式をネスト色分けしてコメント表示のVBA ・セルの数式をネスト色分けしてコメント表示の使用例 ・セルの数式をネスト色分けしてコメント表示の最後に セル結合して表を見やすくする(非推奨) ・セル結合して表を見やすくするVBA ・マクロVBAのショートカット登録 ・セル結合して表を見やすくするVBAの使い方 シートを削除:不定数のシート名に対応 セル番地でバラバラに指定されたセルの削除 シート内に散在する複数表の縦結合 ・シート内に散在する複数表の縦結合するVBA ・シート内に散在する複数表の縦結合するVBAの解説 ・サイト内の参考ページ スピル範囲の自動色付け(強調表示) ・スピル範囲の自動色付け(強調表示)するVBA ・スピル範囲の自動色付け(強調表示)するVBAの解説 ・Grokが作成したVBA ・サイト内の参考ページ いろいろ:マクロVBAサンプル集 ユーザー定義関数でフリガナを取得する(GetPhonetic) ユーザー定義関数でハイパーリンクのURLを取得(Hyperlink) カラーのコード取得、256RGB⇔16進変換 ・カラーのコード取得のシートレイアウト ・カラーのコード取得のVBAコード ・カラーのコード取得の解説 時刻になったら音を鳴らして知らせる(OnTime) ・作成するシート ・標準モジュールのVBAコード ・VBAコードの解説 ・ビープ音を変更したい場合 ・時刻になったら音を鳴らして知らせる最後に 指定文字、指定数式でジャンプ機能(Union) ・ジャンプのセル選択以外でセルを選択するには ・指定文字、指定数式でジャンプ機能のVBA ・指定文字、指定数式でジャンプ機能の解説 ・指定文字、指定数式でジャンプ機能の最後に 「値の貼り付け」をショートカットに登録(OnKey) 「セルの結合」をショートカットに登録(OnKey) 半角カナのみ全角カナに変換する 計算式の元となる数値定数を消去する(Precedents) Beep音で音楽(Beep,Sleep) 日付の検索(配列の使用) ストップウォチ(1/100秒)(Timer) ・ストップウォッチVBAコード ・ストップウォッチVBA解説 ・ストップウォッチ機能強化版 ストップウォチ改(1/100秒)(Timer) ・公開済みの初期のストップウォッチ ・追加する機能 ・シートレイアウト ・VBAコード ・ダウンロード 重複の無いユニークなデータ作成簡単な例で シート「元データ」A列に、1行目に見出し、2行目以降にデータが入っている シート「ユニーク」このA列に、シート「元データ」のA列をユニーク(一意)にして取り出します。まずは、エクセルらしく、ワークシート関数とフィルターを使って 非常にエクセルらしい、素直な処理です。
WEBデータの取得方法 ・サンプルページ ・QueryTables ・InternetExplorer ・MSHTML ・MSXML2 ・WEBデータの取得方法の最後に 右クリックメニューの変更(CommandBars) ・シートモジュールに以下を追加 ・標準モジュールに以下を追加 ・コマンドバー.Controls.Add() ・コントロールのメンバーについて ・CommandBarsの種類 エクセルのアイコン取得(FaceID) 素数を求めるマクロ 入力規則のリスト入力の妥当性判定 ・入力規則に反するデータかの判定Function ・入力規則のリスト入力の妥当性を判定Function ・最後に 配色を使用したカラー設定を固定カラーに変更 指定セルに名前定義されているか判定する ・指定セル範囲が何らかの名前定義に含まれているか ・指定セル範囲と同一範囲の名前定義があるか ・すでに設定されている名前定義を削除してから再設定 ・マクロVBAでの名前定義について Excel2003(xls)を2007以降(xlsx,xlsm)に変換する(HasVBProject) ハイパーリンクからファイルのフルパスを取得する ボタンに表示されているテキストを取得(Application.Caller) Excelの表をPowerPointへ図として貼り付け・Excelの表をPowerPointへ図として貼り付けるVBA ・Excelの表をPowerPointへ図として貼り付けるVBAの解説 ・グラフをPowerPointへ貼り付け ・既にパワーポイントを開いている場合
VBAで表やグラフをPowerPointへ貼り付ける・表やグラフをPowerPointへ貼り付けるVBA ・PowerPointを使う準備と保存終了 ・表(セル範囲)をPowerPointへ貼り付けるVBAの解説 ・グラフをPowerPointへ貼り付けるVBAの解説 ・貼り付け時のエラー対応 ・既にパワーポイントを開いている場合
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除 Shift_JISのテキストファイルをUTF-8に一括変換 VBAコードの全プロシージャー・プロパティ一覧を取得 ・セキュリティについて ・VBAコードの全プロシージャー・プロパティ一覧を取得するVBAコード ・使用する場合のVBAサンプル 数式バーの高さを数式の行数で自動設定 図形オートシェイプ(Shape)の複数選択 ・ワークシートの全てのShapeを選択する場合 ・ShapeオブジェクトのSelectメソッド ・ShapeRangeオブジェクト ・シート内の指定名称の図形を選択 GoogleスプレッドシートをExcelにインポートする ・スプレッドシートのURLを取得 ・ブラウザで直接ダウンロードする ・Power Queryで取り込む ・VBAでGoogleスプレッドシートをインポートする 多階層フォルダ(ディレクトリ)の作成・多階層フォルダ(ディレクトリ)の作成 の具体例 ・Dir関数とMkDirステートメントで多階層フォルダの作成 ・FileSystemObjectで多階層フォルダの作成 ・Win32 APIで多階層フォルダの作成
漢数字→数値変換:漢数字=NUMBERSTRING(数値,1) 配列:マクロVBAサンプル集 1次元配列の並べ替え(バブルソート,挿入ソート、クイックソート) ・検証方法 ・バブルソート ・挿入ソート ・クイックソート ・最後に 2次元配列の並べ替え(バブルソート,クイックソート) ・検証方法 ・バブルソート ・クイックソート ・複数キーでの並べ替えについて ・ワークシートを使って並べ替え・・・番外編 DIR関数で全サブフォルダの全ファイルを取得 ・Dir関数でサブフォルダも含むファイル一覧を取得するVBA ・ファイル一覧を取得するVBAの使用例と解説 ・Dir関数の関連記事 順列の全組み合わせ作成と応用方法・順列とは ・順列の全組み合わせを作成するFunction ・使用例1 ・・・ 配列の順列を作成しシートへ出力 ・使用例2 ・・・ 区切り文字で区切られた文字列の順列を作成 ・使用例3 ・・・ 任意の要素数の順列
スピルに対応したXSPLITユーザー定義関数(文字区切り) ・区切り位置ウィザード ・ワークシートの関数で文字区切りする場合 ・ユーザー定義関数のVBAコード ・XSPLIT関数の使用例 ・ユーザー定義関数の実践使用例 ヒープソートのサンプルVBA:1次元/2次元配列対応版・ヒープソートとは ・ヒープソート:1次元配列用のVBAコード ・ヒープソート:1次元配列用の実行テスト ・ヒープソート:1次元/2次元配列対応版のVBAコード ・ヒープソート:1次元/2次元配列対応版の実行テスト ・サイト内関連ページ
図形:マクロVBAサンプル集 コメントの位置移動と自動サイズ調整とフォント設 図をセル内に強制的に収める(Shape) 図を確認しながら消していく(Shape) オートシェイプを他ブックの同じ位置に貼り付ける(Shapes,DrawingObjects) 全シートの画面キャプチャを取得する(keybd_event) 写真の取込方法について(Pictures.Insert,Shapes.AddPicture) ・Pictures.Insertメソッド ・Shapes.AddPictureメソッド ・Shapesに関連する記事 写真をサムネイルに変換して取り込む(Shapes.AddPicture) ・写真をサムネイルに変換して取り込むVBA ・写真をサムネイルに変換して取り込むVBAの解説 ・Shapesに関連する記事 円グラフの色設定(Chart,SeriesCollection) 棒グラフ・折れ線グラフのサンプルマクロ 人口ピラミッドのグラフをマクロで作成 グラフで特定の横軸の色を変更し基準線を引くマクロ グラフのデータ範囲を自動拡張するマクロ 画像のトリミング(PictureFormat,Crop) イベント:マクロVBAサンプル集 ブックを開いた時に指定シートを表示(Workbook_Open) ブックが閉じられる直前に保存済を確認(Workbook_BeforeClose) シートが選択された時に指定セルに移動(Worksheet_Activate) ダブルクリックで行高・列幅調整(Worksheet_BeforeDoubleClick) ・Worksheet_BeforeDoubleClick ・行高・列幅自動調整のサンプルVBAコード 英小文字が入力されたら大文字に変換(Worksheet_Change) ・Worksheet_Changeイベント ・英小文字が入力されたら大文字に変換するVBA ・英小文字が入力されたら大文字に変換するVBAの解説 セル選択で選択行の色を変更(Worksheet_SelectionChange)Worksheet_SelectionChangeは、セルの選択範囲を変更した時に起動されます。PrivateSubWorksheet_SelectionChange(ByValTargetAsRange) Target 選択されたセルが、Rangeオブジェクトとして渡されます。
方眼紙Excel(神エクセル)に対応するVBA・方眼紙Excel(神エクセル)のサンプル ・方眼紙Excel(神エクセル)に対応するVBAコード ・方眼紙Excel(神エクセル)に対応するVBAの規則と使い方 ・方眼紙Excel(神エクセル)に対応するVBAの最後に
CSV・ADO:マクロVBAサンプル集 VBAでのCSVの扱い方まとめ・本サイトにあるCSV関連記事一覧 ・CSVの読込方法 ・CSVの読み込み方法(改) ・CSVの読み込み方法(改の改) ・CSVの読み込み方法(ジャグ配列) ・CSVの読み込み方法(ジャグ配列)(改) ・CSVの出力(書き出し)方法 ・UTF-8でCSVの読み書き(ADODB.Stream) ・ADOでCSVの読み込み(SQL)
CSVの読み込み方法・もっとも簡単かつ良くあるCSV読み込みVBAコード ・「,」「"」に対応したCSV読み込みVBAコード ・CSVをExcelブックとして開くVBA ・クエリーテーブルを使ったCSV読み込みVBAコード ・その他のCSV読み込み方法
CSVの読み込み方法(改) CSVの読み込み方法(改の改) ・CSVの形式について ・CSV読み込みVBAコード ・配列を使ってシートにまとめて出力する場合 ・QueryTablesを使ったCSV読み込みVBAコード ・本サイトにあるCSV関連記事一覧 CSVの読み込み方法(ジャグ配列) ・CSVの読み込み方法(改の改)での予告 ・CSV読み込みでのジャグ配列の使いどころ ・CSV読み込みVBAコード:ジャグ配列バージョン ・最後に ・本サイトにあるCSV関連記事一覧 CSVの出力(書き出し)方法 ・エクセルの機能をそのまま利用します ・直接CSVを出力 ・本サイトにあるCSV関連記事一覧 UTF-8でCSVの読み書き(ADODB.Stream) ・アクティブシートの内容をUTF-8でCSV出力します ・UTF-8のCSVを読込、シートに出力します ・ADODB.Streamのメソッドとプロパティ ・本サイトにあるCSV関連記事一覧 ADOでマスタ付加と集計(SQL) ADOでマスタ更新(SQL) ADOでCSV読み込み(SQL)・CSVテストデータ ・ADOでCSV読込のVBA ・ADO使用時の注意点 ・ADOレコードセットをCSV出力 ・ADOでTSVの読み込み ・ADOでCSVの読み込みについて ・本サイトにあるCSV関連記事一覧
ADOでテキストデータを集計する ・#助けてVBA の元ツイート ・解答したツイート ・ADOとSQLの解説 Excelファイルを開かずにシート名を取得 Excelファイルを開かずにシート名をチェック ちょっとしたアプリ:マクロVBAサンプル集 エクセルでファイル一覧を作成 アメブロの記事本文をVBAでバックアップする 数独(ナンプレ)を解くVBAに挑戦 数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証 ナンバーリンク(パズル)を解くVBAに挑戦ナンバーリンクというパズルがあります、これをエクセルVBAで解いてみようと思います、数独(ナンプレ)に続くパズルVBA解法の第二弾です。ナンバーリンクをご存じない方は、、ウィキペディア ナンバーリンクのおためし問題 このあたりをお読みください。
ナンバーリンクを解くVBAのパフォーマンス改善 オセロを作りながらマクロVBAを学ぼう 他ブックへのリンクエラーを探すリンクエラーが見つけられない… 「リンクの編集」で、「リンクの解除」を選択してもリンクが削除できない… こんな経験をした人は多いのではないでしょうか。エクセルをいろいろと操作していると、意図せずに参照先が別ブックになってしまい、かつ、その参照先のブックが無くなってしまっている… こんな場合に、リンクエラーとなります。
Excelシートの複雑な計算式を解析するVBA ・複雑な計算式を解析するVBAの概要 ・複雑な計算式を解析する全VBAコード ・複雑な計算式を解析した結果の表示 ・最後に Excel将棋:マクロVBAの学習用 ・Excel将棋の要件定義 ・Excel将棋のシート作成 ・Excel将棋の目次 Excel囲碁:万波奈穂先生に捧ぐ ・Excel囲碁の動作 ・全体の処理流れ ・Excel囲碁の全VBAコード ・Excel囲碁のダウンロード Excel囲碁:再起動後も続けて打てるように改造 ・Excel囲碁の今回の改造のきっかけ ・Excel囲碁の今回の改造点 ・Excel囲碁の全VBAコード ・Excel囲碁のダウンロード エクセルVBAで15パズルを作ってみた ・Excel 15パズルの動作 ・Excel囲碁の全VBAコード ・Excel 15パズルのダウンロード エクセル麻雀ミニゲーム ・エクセル麻雀ミニゲームの動作 ・エクセル麻雀ミニゲームの全VBAコード ・エクセル麻雀ミニゲームのダウンロード 新着記事 NEW ・・・新着記事一覧を見る アクセスランキング ・・・ ランキング一覧を見る このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。 掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。 本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。 This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.