和風スパゲティのレシピ

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

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

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

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

「こんなのあるなら先に言ってよ機能大全」配布資料&配信アーカイブ

第3回 和風スパゲティ勉強会「こんなのあるなら先に言ってよ機能大全」の配布資料と配信アーカイブを共有します。知名度が低いが実は簡単に使えてしかも便利!という機能を集めて解説しました。復習にお役立てください。

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

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

文字の種類(数字/アルファベット/カナ)を判定する

文字の種類(数字/アルファベット/カナ)を判定する方法を解説します。主にLike演算子を利用し、数字なら"#"、アルファベットなら"[A-Z]"または"[a-z]"、カナなら"[ァ-ヶ]"などの文字列と比較して判定します。

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になる小数を近い偶数に寄せる端数処理」のことです。

ActiveXボタンをフォームボタンに置換するマクロ

Excel2024からActiveXコントロールが使用できなくなり、設置したマクロ(イベント)も実行できなくなります。この問題に対応するにあたり、アクティブシートの全ActiveXボタンを一括で置き換えるマクロを紹介します。

オブジェクトがActiveXコントロールか判定する

Excel2024からActiveXコントロールが使用できなくなるにあたり、指定の図形がActiveXコントロールか判定する方法と、ブック内のすべてのActiveXコントロールを取得する方法をそれぞれ解説します。

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

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

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

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

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

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

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

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

改ページを挿入・解除・位置取得する-PageBreak

印刷時の改ページを挿入・解除したり、位置を取得する方法を解説します。WorksheetオブジェクトのH/VPageBreaksプロパティを使う方法と、RangeオブジェクトのPageBreakプロパティを使う方法があります。

6/28(土)21:00~ 第3回 和風スパゲティ勉強会「こんなのあるなら先に言ってよ機能大全」

和風スパゲティ勉強会 第3回のテーマは「こんなのあるなら先に言ってよ機能大全」。知名度が低いけど、実は簡単に使えて便利という機能を集めてみました。学習コスパが良い機能の総まとめとしてぜひご活用ください。

データの区切りごとに改ページを挿入する

小計行や商品種別の切り替わる行など、データの区切りごとに改ページを挿入する方法を解説します。PageBreakプロパティで既存の改ページを判定しながら、条件を満たす行ごとに同プロパティで改ページを設定します。

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

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

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

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

改ページプレビュー・ページレイアウトを設定する

ワークシートのウィンドウ表示モード「標準」「ページ レイアウト」「改ページ プレビュー」をVBAから設定する方法を解説します。設定にはWindowオブジェクトの「View」プロパティを使用します。

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

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

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

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

ダブルクリックでセルの値を切り替えるマクロ

ダブルクリックをするごとにON-OFFが切り替わる、リスト内を順送りするような機能をシート上に実装する方法を解説します。セルに設定したドロップダウンリストの値をループさせる方法もあわせて解説します。

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

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

VBA課題009「人事データからクロス表を作成」マクロ2回答コード

コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第6回課題共有会の課題でもあった「人事データからクロス表を作成」のマクロ2です。

VBA課題009「人事データからクロス表を作成」マクロ1回答コード

コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第6回課題共有会の課題でもあった「人事データからクロス表を作成」のマクロ1です。