和風スパゲティのレシピ

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

日付・時刻

WeekDay(VBA)とWEEKDAY(シート関数)の違い

VBAの組込関数「WeekDay関数」と、ワークシート関数「WEEKDAY関数」の違いを解説します。どちらも日付を受け取って曜日を「数字」で返す関数ですが、第2引数を渡したときの設定に違いがあります。

日付から曜日を取得する - Format/Weekday

日付から曜日を取得する方法を解説します。MonやTue、月・火などの曜日名が欲しい場合はFormat関数を、曜日番号を取得してカレンダーの位置や第1日曜日などを取得したい場合はWeekDay関数を使用します。

DateDiff(VBA)とDATEDIF(Excel)の違い

ExcelVBAのDateDif関数と、ワークシート関数DATEDIFの違いを解説します。両者は全く違う関数であり、シート関数のDATEDIFは年齢の計算などに活用できますが、VBAのDatediff関数はあまり使い道がありません。

生年月日から年齢を計算する - DateDif関数

生年月日から年齢を計算する方法を解説します。シート関数のDATEDIF関数とは異なり、VBAのDateDiff関数では一発で求めることができませんので、Formulaプロパティ、Evaluateメソッド、自作関数で対応します。

文字列を時刻(Date型)に変換する-TimeValue関数

文字列を時刻に変換するTimeValue関数の使い方を解説します。日付・時刻ともにデータ型としては同じDate型のため、正確には日付が0(1899年12月31日)の時刻を返します。シリアル値には実行できません。

文字列を日付(Date型)に変換する-DateValue関数

文字列を日付型に変換する、DateValue関数の使い方を解説します。シート関数の「DATEVALUE関数」とほぼ同じ仕様の関数でシリアル値を日付型にすることはできませんが、シート関数と異なり負の数を扱えます。

値を日付型(Date型)に変換する - CDate関数

数値や文字列を日付型に変換する、CDate関数の使い方を解説します。文字列と数値(シリアル値)どちらにも対応しているのが特長で、文字列の"令和7年6月13日"と数値の45000をどちらもDate型にしてくれます。

マクロの実行時間計測(Timer)をクラス化する

マクロの実行時間はTimer関数で0.00秒単位で測ることができます。開始時刻 = Timer、終了時刻 = Timer、終了時刻-開始時刻で求まるコードですが、これをクラスにすることで管理する変数が2つ減り、さらに簡単に呼び出せるようになります。

Time関数とTimer関数の違い

現在時刻を取得するTime関数とTimer関数の違いを解説します。単位(型)と精度が異なります。Time関数がDate型で表示形式や各種関数に利用できるのに対し、Timer関数は1/00秒まで計測できるSingle型のため、実行速度計測などに向いています。

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文で表現できるようになりとても便利です。