和風スパゲティのレシピ

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

サンプルコード・関数

帳票出力マクロを簡単に書くためのクラスを作る

完成品の全体が見たい!という方のための、マクロサンプルです。今回のテーマは「データシート⇒帳票を出力」です。利便性をテーマに作成しましたので、クラスの参考にするなり、中身を見ずにコピペして使うなり、お好きな方法でご活用ください。

帳票出力マクロをクラスを使って書く

完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。クラスの基本的な書き方を使って実装しておりますので、クラスを勉強し始めた方は、参考にしてみてください。

帳票出力マクロをプロシージャ分割して書く

完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。関数(プロシージャ)分割を使って、メンテナンス性を意識したコードにしておりますので、参考にしてみてください。

最終行を取得する方法7選 - 基本構文とサンプルコード

Excelのデータ処理をマクロで自動化しようと思ったら、必ずついて回るのが「最終行の自動取得」です。データの処理がどんなものであれ、まずはデータがどこまで入っているかを確認して、処理を実行する範囲を決めないといけません。

セル範囲(Range)を指定する方法10選

セル範囲の指定は、簡単に書こうと思えば書けるので、普段はあまり考えない部分かもしれません。ですが読みやすさや書きやすさを追求しようと思えば、とても考えがいのある処理ですので、自分の知識の確認の意味でも、ちょっと確認してみましょう。

印刷映えする格子罫線を自動で引くマクロ

「外枠が実線で中が細い点線の格子罫線」を自動で引くマクロを紹介します。普通の格子罫線は印刷すると太くて気になりますが、一番細い点線を使うと、印刷時は点線ではなく細い直線になります。表をキレイに印刷したいときは、この設定で罫線を引きましょう。

汎用マクロ・便利ツール用の共通関数について

本ブログで紹介している、汎用マクロ・便利ツールは、特に頻出の処理を、共通の関数として抽出して使っています。共通関数のソースコードと解説を以下に記しておきますので、コードの説明が読みたい方はご利用ください。

セル範囲の値だけをコピーする - 基本構文とサンプルコード

セルの値だけを、範囲から範囲へコピーする方法を紹介します。A1:C3の正方形を、D4:F6にコピーするコードは、実は「Range("D4:F6").Value = Range("A1:C3").Value」で済みます。「値貼り付け」より速くて読みやすいので、こちらを使いましょう。

文字列の中にある数字を抽出する関数

指定の文字列から数字だけを抜き出す汎用関数を紹介します。数値をすべて抽出する(123みかん456 ⇒ 123456)タイプと、最初に登場したものを抽出する(1,100円(税10%) ⇒ 1,100)タイプがありますので、目的にあった方をご覧ください。

ダイアログボックスでフォルダを指定・選択する

マクロの実行中に、ダイアログボックスを開き、ユーザーにフォルダを指定・選択してもらうコードを、コピペして使える関数にしたものを紹介します。ユーザーが選択したフォルダの「パス」を返す関数なので、Stringの変数に入れたりして使ってください。

ブックを現在開いているかチェックする関数

ある名前のブックを、現在開いているかを調べる関数を紹介します。Worksbooks(ブック名)の「インデックスが有効範囲にありません」エラーを回避するのによく使います。やり方は簡単で、教本のような「コレクションに対するFor Each」で処理します。

ワークシートが存在するかチェックする関数

ある名前のワークシートが、指定したブックに存在するかを調べる関数を紹介します。Worksheets(シート名)の「インデックスが有効範囲にありません」エラーを回避するのに使います。教本のような「コレクションに対するFor Each」で処理します。

数値を丸数字①②③~に変換する

丸数字(1) = ①、丸数字(24) = ㉔ のように、丸数字(n)を①②…に変換する関数が「丸数字(n) = Chr(Asc("①") + n - 1)」です。お忙しい方は、ソースコードをコピーして、使い方のように呼び出すだけでOKです。コードをしっかり読みたい方は、解説をどうぞ。

4月から3月を連番に変換してコードを整理する

日本企業でエクセルを使う場合「年度」で日付を管理したい場面が非常に多いです。年度を求めたりといった直接的な計算もさることながら、For m = 4 To 12 For m = 1 To 3 とループを分けるのも面倒な処理です。これを簡潔にする関数を作りましょう。

「年度」を使って日付を求めるDateSerial関数

日本企業でエクセルを使う場合、「年度」で日付を管理したい場面が非常に多いです。ですが、残念ながらタイトルの関数はデフォルトでは用意されていません。と言うことで作りましょう。2019.4.1~2020.3.31を、1つの式で表現できるようになりとても便利です。

日付から「年度」を求める関数

日本企業でエクセルを使う場合、「年度」で日付を管理したい場面が非常に多いです。ですが、残念ながらタイトルの関数はデフォルトでは用意されていません。と言うことで作りましょう。2019.4.1~2020.3.31を、1文で表現できるようになりとても便利です。

Colorプロパティの値からRGBの値を求める

ColorプロパティやRGB関数の値、マクロ記録で記録された色は「16764390」のように謎の数字で、見ただけでは何色かわかりません。この値はRGB値と呼びます。このRGB値から、RGBそれぞれの値「230,205,255」を取得する関数を紹介します。

セルの文字色・背景色を列挙型Enumで記憶する

セルの文字色・背景色を設定するとき、色コードやRGBを調べなくてはいけません。初回はしょうがないのですが、何度も使う色は定数などで持っておきたいところです。この色の記憶に列挙型変数(Enum)がとても便利なので、ぜひ活用してみてください。

オートフィルターで数値の条件・区間を抽出する

「10以上」や「15以上20以下」など、オートフィルターによる数値の条件・区間での絞り込みを、コピペして使えるユーティリティ関数にしたものを紹介します。お忙しい方は、ソースコードをコピーして、使い方のように呼び出すだけでOKです。

オートフィルターで抽出中の件数をカウントする

オートフィルターで抽出中のレコードを数えるユーティリティ関数を紹介します。レコードが抽出されているかどうかは、その行が表示されているかを調べればわかるので、「見えている行の数 ⇒ どこか1列の見えているセルの数」を数えることで計算します。

オートフィルターをクリアして全て表示する

オートフィルターのクリア(すべての抽出をリセットして、すべての行を表示する)を、コピペして使えるユーティリティ関数にしたものを紹介します。お忙しい方はソースコードをコピーして、呼び出すだけでOKです。コードをしっかり読みたい方は、解説をどうぞ。

オートフィルターでデータを抽出する

オートフィルターで一番基本となる「データの抽出」を、コピペして使えるユーティリティ関数にしたものを紹介します。オートフィルターはとても便利な機能で、しかも高速なので、使いこなせば読みやすくて速いマクロを作ることができます。