和風スパゲティのレシピ

日本語でコーディングするExcelVBA

2025-12-01から1ヶ月間の記事一覧

プロシージャ分割はいつ教えるのが最適か

Sub・Functionを使って分割するテクニックは、引数や構造を理解する負担を差し引いても初学者の助けになることがあります。早くからプロシージャ分割に触れてみて、感触によってはどんどん使ってみるのもいいかもしれません。

88本目:クロスABC分析作成

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

89本目:2つのフォルダの統合

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

90本目:セルに重なっている画像の削除

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

91本目:時間計算(残業時間の月間合計)

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

LT会「みんなの便利なAI活用術」配布資料&配信アーカイブ

LT会「みんなの便利なAI活用術」の配布資料と配信アーカイブを共有します。-コーディング規約をAIに読ませてマクロを作る方法と、そのコーディング規約をAIに作ってもらう方法を発表をしましたのでご活用ください。

テーブルのフィルターをクリアする - ShowAllData

テーブルのフィルターをクリアする場合は、ListObject.AutoFilterのShowAllDataメソッドを実行します。これはフィルターの抽出状態に関わらず実行できますので、抽出がかかっていなくてもエラーにはなりません。

ユーザー定義Functionにスピル機能を持たせる

ユーザー定義関数をスピルさせるには、配列(Array)を返り値として返すだけでOKです。一次元配列であれば横方向にスピルし、n行1列の二次元配列であれば縦方向にスピルさせることができます。

92本目:セルの色を16進数で返す関数

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

「プロシージャ分割入門」配布資料&配信アーカイブ

第9回 和風スパゲティ勉強会「プロシージャ分割入門」の配布資料と配信アーカイブを共有します。SSub・Functionを使ったマクロ全体の設計を解説しましたので、復習や見逃し配信にご活用ください。

ZIPファイルをマクロで解凍する

Zipファイルをマクロで解凍する方法を解説します。WScript.ShellオブジェクトのRunメソッドを使用して、ZIPファイルを解凍するPowerShellをVBAから呼ぶのが一番簡単です。

Excel-Fun.xls*参加者2,000名を突破しました!

2024/12/10にオープンしたExcel&VBA総合コミュニティ「Excel-Fun.xls*」が、 おかげさまで 参加者 2,000人 を突破しました! コミュニティ、イベントにいつもご参加いただいている皆様、 本当にありがとうございます! 12/13に1周年記念イベントを開催してお…

93本目:複数ブックを連結して再分割

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

抽出データを新規ブックにコピーするマクロ

フィルターで抽出されているデータだけをコピーして別ブックに出力するマクロを紹介します。書式などを保持するため、一旦シートごとコピーして見出し以下を消し、再度元シートからコピーして実行します。

フィルターで抽出中か判定する - FilterMode/On

オートフィルターの各種判定には、設置判定にはAutoFilterModeプロパティ、いずれかの列の抽出判定にはFilterModeプロパティ、特定の列の抽出判定にはFilter.Onプロパティをそれぞれ調べます。

フォルダを空にする(ファイル・フォルダを全削除)

フォルダを空にするには、ワイルドカード「*」を使った一括削除をファイル・フォルダ両方へ実行します。Killは可能ですがRmDirではできないため、FileSystemObjectのDeleteFile/DeleteFolderメソッドを利用します。

フォルダ内のすべてのファイルを削除する - Kill

フォルダ内のすべてのファイルを削除するには、Killステートメントのワイルドカード*を用いた一括削除を用いるのが簡単です。FileSystemObjectのDeleteFileメソッドでも全く同じ処理を実行可能です。

行・列全体を取得する - Rows/Columns/Entire

行・列全体をRangeオブジェクトとして取得するにはRows/Columnsプロパティを使用します。セル範囲を含む行・列全体を取得したい場合は、EntireRow/EntireColumnプロパティを使用する方法もあります。

RGB値とHTMLカラーコードを相互変換する

RGB値とHTMLカラーコード(#FFFFFF形式)を相互に変換する方法を解説します。RGB⇒HTMLにはHex関数、HTML⇒RGBには&H接頭辞を使います。RGB値とHTMLコードはそのままではRとBが逆順であることにご注意ください。

10進数と16進数を相互変換する - &H/Hex関数

10進数と16進数を相互に変換する方法を解説します。10進数を16進数に変換するにはHex関数を使用します。16進数を10進数に変換したい場合は、16進数テキストの先頭に「&H」を文字列結合してからCLng関数を使用します。

色をRGB値で設定する - RGB関数

背景色や文字色などをRGB指定で着色するには、設定したいオブジェクトのColorプロパティにRGB関数の結果を代入します。RGB関数の結果は整数値になっているため、これを調べれば定数や変数で指定することも可能です。

文字列を区切り文字で分割する - Split関数

文字列を区切り文字で分割したするにはSplit関数を使用します。結果は配列として取得されます。TEXTSPLITと違い一次元配列を生成しますので、セルに縦方向に出力する場合はTRANSPOSE関数を使用する必要があります。

「Excel-Fun.xls*」が創設1周年を迎えました。

昨年2024年12月10日に開設したExcel&VBAの総合コミュニティ、 「Excel-Fun.xls*」が本日をもって1周年を迎えることができました 1年で500名を目標なんて言っていた参加人数はなんと1,500名を越え、 開催した勉強会も110と、とても盛況に1年を過ごすことがで…

指定列のデータ部分だけを選択するマクロ

表形式のデータを加工する際、指定列のデータ部分だけを選択したいことが良くあります。途中に空セルがあるなどでCtrl+Shift+↓が使えない時に用に、この範囲を自動取得してくれるマクロを作りましたのでご活用ください。

指定列のデータ部分を取得する-Resize/Intersect

特定の列のデータ部分を取得する方法を解説します。Range(Cells, Cells)、第1セル.Resize(データ数)、Intersect(データ全体, Columns(指定列))、データ全体.Columns(指定列)の4種のコードを使い分けて使用します。

CurrentRegionに見出し行推定機能を追加する

表エリア取得に非常に便利なCurrentRegionですが、上部余白を誤取得してしまう弱点があります。この弱点を解消する改良型CurrentRegionを自作ましたので、よろしければ皆さんもご活用ください。

セル範囲.Cells(R, C)の仕様と使い方

Worksheets("○○").Cells(行, 列)でおなじみのCellsプロパティですが、実はセル範囲.Cells(行, 列)で実行することも可能です。さらにセル範囲.Cells(i)という引数ひとつでの実行も可能ですので、この仕様を深掘りしていきましょう。

セル範囲の最終(右下)セルを取得する

セル範囲の最後のセルを取得には、セル範囲.Cells(セル範囲.Cells.Count)と記述します。セルの数番目のセル=最終セルという理屈で取得できます。このコードは複数エリアに対してはうごきませんのでご注意ください。

セル範囲の先頭(左上)のセルを取得する

セル範囲の先頭のセルを取得する方法を解説します。セル範囲.Cells(1)というコードで簡単に取得できます。他にCells(1, 1)やItem(1)などで取得することもできますが、Cells(1)が最も安定するコードです。

表の範囲を推定して取得する - CurrentRegion

Excelには表のエリアを推定して選択する機能があり、Ctrl+Aで実行することができます。この機能をVBAから呼び出してRangeオブジェクトを取得するには、CurrentRegion(カレントリージョン)プロパティを使用します。