和風スパゲティのレシピ

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

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

Application.OnkeyとMacroOptionsの違い

OnKeyメソッドとMacroOptionsメソッドの違いを解説します。両者ともマクロにショートカットキーを設定する機能ですが、設定を保存できるか、ファンクションキーや特殊キーに設定できるかに違いがあります。

OnKeyメソッドでショートカットキーを設定する

マクロにショートカットキーを設定する方法として、マクロオプション以外にOnKeyメソッドも使用できます。Excelを開いている間のみの設定ですが、代わりにShift/Altやファンクションキーにも設定が可能です。

マクロにショートカットキーを設定する

自作したマクロにショートカットキーを設定する方法を解説します。開発タブ⇒マクロの一覧⇒設定したいマクロを選んだ状態で「オプション」⇒ショートカットキーを入力という手順で設定できます。

マクロに設定したショートカットキーを一括解除する

「マクロのショートカットキー全解除」には裏技があり、コードすべてを切り取ってその場所に再度貼り付ける、あるいはコメントアウトする方法でモジュール内の全ショートカットキーを一括解除することができます。

新規ブックでのCtrl+Sを旧ダイアログに戻すマクロ

新規ブックや読取専用ブックでCtrl+Sを実行したときに出る名前を付けて保存ダイアログがフォルダパスをペーストできる場所がないものに改悪されたため、これを旧来のダイアログに戻すマクロを紹介します。

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

ワークシート関数をFunctionで自作してみる遊びです。今回は【COUNT関数】を自作してみました。数値の判定をするの機能が意外とVBAになく、TypeName関数で自作した【ISNUMBER関数】を利用しています。

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

ワークシート関数をFunctionで自作してみる遊びです。今回は【COUNTA関数】を自作してみました。今回は元の関数をほぼ忠実に再現していますが、設計上ジャグ配列への対応が改良ポイントになりました。

文字列比較の設定を変更する - Option Compare

文字列を比較する際、通常は大/小文字や全/半角は区別されます。この設定を変更し、大/小文字、全/半角を同一とみなす("A"="a"をTrueと判定する)設定にするには、Option Compare ステートメントを使用します。

文字列の順序を比較する - StrComp関数

文字列の順序を比較する際に使用する際はStrComp関数を使用します。StrComp(文字列1, 文字列2, 比較種類)という式で、文字列大小によって-1,0,1の3つの値が返ります。大文字小文字を区別するかを指定できます。

文字列の文字数を数える - Len/LenB関数

文字列の文字数を数えるLen/LenB関数の使い方を解説します。構文は簡単ですが、Len関数には「引数がString型でない場合は消費メモリを返す」という仕様があり、Long型は常に4が返ってしまうため注意してください。

8/28(木)21:00~ 第5回 和風スパゲティ勉強会「Collction&Dictionary」

和風スパゲティ勉強会 第5回のテーマは「Collction&Dictionary」ということで、使いこなせば強力な武器になるこの2つの機能を徹底解説します!同時開催の配列入門もご視聴いただき、3つ一気にマスターしましょう。

8/25(月)21:00~ 第4回 和風スパゲティ勉強会「配列(Array)入門」

和風スパゲティ勉強会 第4回のテーマは「配列(Array)入門」ということで、ExcelVBAにおける配列の使い方を基本コードから徹底解説します!是非とも今回の講座で配列の基本をマスターしていってください!

セル内文字列を文字ごとに操作する - Characters

セル内の文字列を文字ごとに操作する、RangeオブジェクトのCharactersプロパティを解説します。書式を設定するFont、テキストを取得、置換するText、削除・挿入を行うDelete/Insetメソッドなどが使用できます。

セル内の文字列を一部だけ着色する - Characters

セル内の文字列を一部だけ着色(書式変更)する方法を解説します。RangeオブジェクトのCharactersプロパティ、Fontプロパティを使用します。Bold、Name、Sizeで太字、サイズ、フォント種類も設定できます。

セル内の特定文字列だけを着色する - Characters

セル内の特定の文字列を着色する方法を解説します。Instr関数で文字列の位置を特定し、Charactersプロパティを用いて特定文字列だけを書式設定します。サイズ/太字/フォント/背景色なども同じように設定可能です。

特定の文字列を含むセルを検索する - Instr関数

ある文字列を含むセルを検索する方法を解説します。For文またはFor Each文でセルをループし、Instr関数で特定の文字列を含んでいるか判定します。より複雑な判定を行う場合はLike演算子を使用してください。

Dictionary内の配列は要素の書き換えが出来ない

Dictionary内の配列は要素の書き換えが出来ません。Dictionary内の配列に代入した値が反映されない、Dictionary×配列によるクロス集計の結果が0になってしまうなどにお悩みの方はこの罠を疑ってください。

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

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

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

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

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

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

毎週金曜22:00~「スパとふゆの0からはじめるExcelマクロ」

毎週金曜日 22:00~「スパとふゆの0からはじめるExcelマクロ」と称して、Excelマクロ初心者の友人ふゆさんに0からVBAを教ているところをただ垂れ流すだけの配信をYoutubeLiveで行います!お気軽にご参加ください。

シート名変更中はRangeのメソッドが失敗する

シート名変更中でもマクロは実行できてしまい、「Rangeクラスの○○メソッドが失敗しました」エラーが発生してしまいます。マクロを作った直後だけ発生するエラーなどに困った場合はこれを疑ってください。

オートフィルで連続データを作成する - AutoFill

Excelのオートフィル機能をVBAから実行し、コピーや連続データの作成を行う方法を解説します。RangeオブジェクトのAutoFillメソッドを使用します。Resizeとの併用や日付の年月単位加算、連番の高速生成などに活用します。

ブレークポイントとStopステートメントの違い

ブレークポイントとStopステートメントの違いを解説します。どちらもマクロの実行を任意の位置で一時停止する機能ですが、保存できるかどうか、条件を設定できるか、設定の簡単さ

セル結合&Excel方眼紙は悪なのか

今日は「セル結合」と「Excel方眼紙」について語りたいと思います。どちらも正しく使えば超便利!、というか代替品がありませんので、データシートと帳票シートをきっちり分けて正しく使っていきましょう。

マクロを一時停止する - ブレークポイント/Stop

マクロを任意の行で一時停止させる方法を解説します。ブレークポイントとStopステートメントの2種類の方法があります。ブレークポイントは気軽に設定できるのが利点で、対してStopは停止条件を設定できるのが利点です。

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

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

図形(Shape)の種類を調べる - Typeプロパティ

シート上の図形やオブジェクトの種類を調べる、ShapeオブジェクトのTypeプロパティを解説します。シェイプ.Typeで取得できる数値と対応する定数を調べることで、Shapeがどの種類化を調べることができます。

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

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

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

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