和風スパゲティのレシピ

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

シート関数・VBA関数

セル値や変数が文字列(String)か判定する

セル値や変数、配列の中身が文字列か判定するには、TypeName関数を使用します。ただしTypeName関数は"200"や"2025/4/1"なども文字列と判定するため、場合によってIsNumericやIsDateと併用してください。

"100円"も数字として合計できるSUM関数を作る

ワークシート関数をFunctionで自作してみる遊びです。今回は「100円+100円を200と計算してくれるSUM関数」を作ってみようと思います。100円(※1)の1は無視して100を取得する気遣いを処理に入れてみました。

ワークシート関数を自作する【SUM編】

ワークシート関数をFunctionで自作してみる遊びです。今回は【SUM関数】を自作してみました。オリジナル改修ポイントは、文字列数値の加算、日付の無視、ジャグ配列への対応の3つです。

文字列内の指定文字列を削除する - Replace関数

文字列の中から文字列を検索して削除する方法を解説します。通常はReplace関数を用いますが、n個目だけを削除したい、八謙一の前後も削除したいなどに対応する場合はSubstitute関数やInstr関数を用います。

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

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

ひらがな↔カタカナの相互変換 - StrConv関数

文字列中のひらがなをカタカナにしたり、カタカナをひらがなに変換する方法を解説します。StrConv関数を使用し、引数にvbHiragana、vbKatakanaを渡します。半角カナに対応するには別の方法が必要になります。

半角英数はそのままに半角カナを全角カナに変換する

文字列中の半角カナを全角カナに変換する場合は、StrConv関数を使用します。しかし半角⇒全角を行う引数vbWideはすべての半角文字を変換してしまうため、半角英字や半角数字をそのままにする処理が必要です。

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

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

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

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

数値の桁数を揃える(0埋めする) - Format関数

数値の0埋めにはFormat関数を利用します。ただし、変数に入れるときはString型、セルに出力する際は書式を「文字列」にするか値の先頭にシングルクォーテーション「'」を付けてから出力する必要があります。

数値の桁数を取得する/小数点第何位か調べる

数値が何桁か数える場合は、Len関数を使用します。ただしLen関数は「String型以外に使用すると使用するメモリ数を返す」という仕様があるため、CStr関数を使って一度文字列にしてから実行してください。

VBAで十進数(Decimal)型を扱う - CDec関数

VBAで十進数(Decimal)型を扱うときに使用するCDec関数を解説します。Decimal型は「固定小数点を動的に保持する」Currency型の上位のデータ型ですが、計算精度がDouble型以上ではない点に注意して下さい。

値をVariant型に変換する - CVar関数

値をVariant型に変換する、CVar関数の使い方を解説します。Variant型の値というものは存在せず、Variant型の変数はこの関数を必要としません。よってこの関数は相当特殊なことをしたいとき以外は使用しないと思います。

値を倍精度浮動小数(Double型)に変換する - CDbl関数

数値を倍精度浮動小数点数に変換する、CDbl関数の使い方を解説します。文字列で保存された値を数値に変換するシート関数のVALUEと同じ用途で使用する他、Date型の値をシリアル値に変換する際にも使用します。

VBAのRound関数は四捨五入ではなく銀行丸め

VBAのRound関数はシート関数「ROUND」と異なり、四捨五入ではなく銀行丸めと呼ばれる小数処理を行います。銀行丸めとは「ピッタリX.5になる小数を近い偶数に寄せる端数処理」のことです。

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

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

値を単精度浮動小数(Single型)に変換する - CSng関数

値を単精度浮動小数点数に変換する、CSng関数の使い方を解説します。本関数はCDbl関数の完全下位互換ですので、よほどのことがない限りは使用しないと思います。

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

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

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

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

Mod演算子(VBA)とMOD関数(Excel)の違い

VBAで使用できる演算子「Mod演算子」と、Excelで使用できるシート関数「MOD関数」の違いを解説します。どちらも剰余(○を△で割った余り)を計算し、通常の使用(正の整数での使用)では特に違いはありません。

値が偶数/奇数か調べる - IsEven/IsOdd/Mod

数値が偶数/奇数か判定する方法を解説します。シート関数の「ISEVEN」「ISODD」を使用する方法と、Mod演算子を使用する方法の2つの方法があります。Mod演算子は負の値に負の値を返す点に注意してください。

値を通貨型(Currency型)に変換する - CCur関数

値を通貨型の小数値(Currency型)に変換する、CCur関数を解説します。Currency型は固定小数点を扱えるデータ型で、0.1+0.2といった割り切れる小数の計算をDouble型より正確に行うことができるデータ型です。

文字列の前方部分から数字を取り出す - Val関数

文字列の前方部分にある数字を取り出すVal関数を解説します。この関数は「文字列を数字に変換する関数」ではありません。シート関数の「VALUE関数」とは全く別の関数になりますのでご注意ください。

環境依存文字をセルに出力する - ChrW関数

環境依存文字をコード上に書こうとすると「?」マークになってしまいます。このようにコード上(VBE)に表示できない環境依存文字をセルに出力するには、ChrW関数に対象の文字コードを渡して文字を取得します。

文字コードから文字を取得する - Chr/ChrW/ChrB関数

文字コードから文字を取得する、Chr関数シリーズを解説します。Shift-JISコードから文字を取得するChr関数と、Unicodeコードから文字を取得するChrW関数があり、特にVBEに表示できない文字を扱う際に使用します。

文字コードを取得する - Asc/AscW/AscB関数

対象文字の文字コードを取得するAsc関数を解説します。Asc関数はShift-JIS、AscW関数はUnicodeの文字コードを返します。VBEで表示できない文字をChrW関数で扱う際に、渡す文字コードを調べるのに利用します。

Asc(VBA関数)とASC(シート関数)の違い

VBAのAsc関数と、シート関数のASC関数の違いを解説します。この2つはまったく違う関数で、VBAのAsc関数は文字コードを取得する関数、対してシート関数のASC関数は、全角文字を半角に変換する関数です。

文字列前後の空白を削除する-Trim/LTrim/RTrim関数

文字列の前後のスペースを削除するTrim関数の使い方を解説します。Trim関数のほかにも左右だけ削除するLTrim/RTrim関数と、途中の複数スペースも1つにしてくれるシート関数のTRIMも使用することができます。

値を0~255の正整数に変換する - CByte関数

値を0~255の正の整数に変換するCByte関数を解説します。負の数や256以上の値を渡した場合はオーバーフロー、文字列を渡した場合は型が一致しませんエラーを返します。小数を渡した場合は銀行丸めを行います。

値をTrue/False(Bool型)に変換する - CBool関数

値をBoolean型に変換する、CBool関数を解説します。そもそも使用することはほとんどない関数なのですが、数値は「0はFalse、それ以外はすべてTrue」という挙動になっており、日付や数値文字列も含めて判定します。