和風スパゲティのレシピ

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

読みやすいコードの書き方

ExcelVBAコーディングガイドライン

コーディング規約とは変数や処理の書き方などに方針を定めたもので、コードの書き方に迷う時間を減らしたり、以前書いたコードが読みやすくなる効果があります。ぜひ皆さんもマイルールを作ってみてください。

複数のOR条件分岐を簡潔に書く方法5選

複数のOR条件分岐を簡潔に書く方法を解説します。IF/ORステートメント、Select Case ステートメント、Functionプロシージャ、カンマ区切りテキスト&Instr関数、Dictionary(連想配列)を紹介しますのでお好みで使い分けて下さい。

6/3(火)21:00~ VBA勉強会「第5回 スパゲティコード添削会」

「スパゲティコード添削会」と称してVBA勉強会を開催します!今回は本ブログで出題したVBAの基本問題「領収書PDFを出力」を題材に、コード全体の設計などをリファクタリングしていきます。

VBA問題#3「月次請求書を作成」完成版解答

ExcelVBAの練習問題シリーズ第3弾「月次請求書を作成」の、マクロ①②+挑戦ポイントに対応した完全解答版です。これが正解という訳ではなくいろいろなやり方ありますが、ひとつの解答としてご参考ください。

5/3(土)21:00~ VBA勉強会「第4回 スパゲティコード添削会」

「スパゲティコード添削会」と称してVBA勉強会を開催します!VBAの基本コード総合問題「月次請求書を作成」を題材に、コードを読みやすくする方法を解説します。

VBA問題#2「注文書をデータ取込」完成版解答

ExcelVBAの練習問題シリーズ第1弾「注文書をデータ取込」の、マクロ①②+挑戦ポイントに対応した完全解答版です。これが正解という訳ではなくいろいろなやり方ありますが、ひとつの解答としてご参考ください。

ワークシートをオブジェクト名で指定する

ワークシートを指定する方法としてシート名やシート番号を利用する他に「シートオブジェクト名」が使用できます。取り違えづらく、読みやすく、書きやすい最強のシート指定方法ですので是非とも採用してみてください。

VBA問題#1「領収書PDFを出力」完成版解答

ExcelVBAの練習問題シリーズ第1弾「領収書PDFを出力」の、マクロ①②+挑戦ポイントに対応した完全解答版です。これが正解という訳ではなくいろいろなやり方ありますが、ひとつの解答としてご参考ください。

「列挙型変数Enumの使い方」配布資料&配信アーカイブ

第2回 和風スパゲティ勉強会「列挙型変数Enumの使い方」の配布資料と配信アーカイブを共有します。Enum変数を使った超高効率なCells指定法とEnumの真骨頂レイアウト変更を解説しました。復習にお役立てください。

4/12(土)21:00~ 第2回 和風スパゲティ勉強会「列挙型変数Enumの使い方」

和風スパゲティ勉強会 第2回のテーマは「列挙型変数Enumの使い方」。Enumによる超高効率Cells指定法を解説します。コーディング効率を劇的に向上してくれるExcelVBA屈指の機能なのでぜひ習得していってください!

2/15(土)21:00~ VBA勉強会「第3回 スパゲティコード添削会」

「スパゲティコード添削会」と称してVBA勉強会を開催します!VBAの基本コード復習課題「領収書PDFを出力」を題材に、コードを読みやすくする方法を解説します。

1/28(火)21:00~ VBA勉強会「第2回 スパゲティコード添削会」

「スパゲティコード添削会」と称してVBA勉強会を開催します!今回は「Sub・Functionの分割」をテーマに2題を添削します。 プロシージャ分割の入門も交えて行いますので興味のある方は是非ご参加ください!

Range、Cellsの「.Value」は省略してよいか

VBAにおいてセル(Rangeオブジェクト)を扱う際、「.Value」を省略しても同じ動きになることが多いです。.Valueはどんな時に書く必要があるのか、書く必要がなかったとして省略しても良いのかを解説します。

12/28(土)21:00~ VBA勉強会「第1回 スパゲティコード添削会」

「スパゲティコード添削会」と称して、みなさんのマクロをリファクタリングするVBA勉強会を開催します!ちょっとしたコードからマクロ全体まで、添削してほしいコードがあればなんでもご相談ください!

Dictionaryで列番号を管理する

列番号を管理する方法として、列挙型変数Enumを用いる他に、Dictionaryを用いる方法もあります。特に「同じコードをレイアウトの異なるシートに対して実行できる」のが強みですので一度使ってみてください。

4/2(土)20:00~ VBA勉強会「脱初心者!メンテナンスしやすいマクロの作り方」

4月2日(土) 20:00~ Zoom勉強会に登壇します。「脱初心者!メンテナンスしやすいマクロの作り方」と題し、VBEの基本操作、シートの指定方法、変数(説明変数)、定数(Enum)をテーマに講演します。聞き専OKですのでお気軽にご参加ください。

簡単で便利なクラスを作って学ぶVBAクラスモジュール入門

VBAの学習に難敵として立ちはだかるのがクラスモジュールです。これは目的がわからないことが主な原因なのですが、クラスモジュールの目的はズバリ「コードの整理整頓」です。簡単で便利なクラスを作って勉強してみましょう。

プロシージャ[Sub/Function]の使い方入門

マクロを作るSubやFunctionを、正確にはSubプロシージャ/Functionプロシージャと呼びます。このプロシージャは「使いどころがわからない」と悩む人が多く、そんな方々へ向けて、プロシージャ分割の基礎と使いどころを解説いたします。

マジックナンバーを減らす方法6選

マジックナンバーという用語をご存知でしょうか?Cells(R, 4) = Cells(R, 2) * Cells(R, 3)など、直接入力された数値を指す用語です。この3つの数値は、改修時の書き換えが面倒かつ危険でしかも読みづらいので、なくさなければいけない数字です。

Cells(R, ○)←○を入力するスピードを極めろ!

Cells(R, ○)←VBAをやっている限り入力し続けることになるこのコードですが、この○を普段どうやって入力していますか?個数→P列→16という対応をいかに素早く考えるかがカギになるこの処理ですが、実はそれ以上に大事なことがあります。

ベタ打ち数値はすべてマジックナンバー?

マジックナンバーという用語をご存知でしょうか?Cells(R, 4) = Cells(R, 2) * Cells(R, 3)の2、3、4など、コード中に直接入力された数値を指す用語です。メンテ・可読性の点で、しっかりとプログラムを組むなら無くすべき数値です。

ユーザー辞書(IME単語登録)にコードを登録する

日本語変数・関数にとって、最大の敵は「入力のめんどくささ」です。この対策として、ふぁん⇒Functionのように変換を登録し、それでコードを入力していく方法があります。逆にコーディングが簡単で速くなるポテンシャルがあるので、是非使っていきましょう。

よく書くコードは汎用関数に - 作り方と使い方

どんなマクロでも使えるような関数のことを汎用関数と呼びます。よく書く処理は汎用関数にして持っておきましょう。同じコードを何回も書かなくて良くなるだけでなく、コードが読みやすくなり、重要な処理に集中できるようになります。

英訳してはいけない変数名第3位「専門用語」

英訳してはいけない変数第1位のワークシート、第2位の列見出し名ときて、最後は「専門用語」です。ExcelVBAを用いて業務を効率化せんとするみなさんはその道のプロです。プロ同士の繊細な意思疎通を図るためにも、専門用語はそのまま変数名にしましょう。

英訳してはいけない変数名第2位「列見出し名」

今回は日本語変数に関するお話です。第1位のワークシートに続き、列見出し名が日本語だった場合は、その変数名をわざわざ英訳してはいけません。特にEnum定数などは、入力も日本語の方が簡単なコードですので、しっかり一致させたコードを書きましょう。

英訳してはいけない変数名第1位「ワークシート」

今回は日本語変数に関するお話です。単刀直入に、シート名が日本語だった場合に、その変数名をわざわざ英訳してはいけません。VBAではワークシート名もソースコードの一部です。同じオブジェクトの変数名は、すべてのコードで同じ単語を当てましょう。

セル範囲(Range)を取得する方法10選

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

Elseの中にメインコードを書かない

「If 開始条件=False Then 警告 Else メインコード Endif」と書いているマクロは、ExitSub EndIfと一旦If文を閉じることで、メインの処理をElse内に書かずに済みます。メインコードのインデントが1つ減りますし、終わった話は終わったと明示しましょう。

固定のセル(Range)を定数(Const)で定義する

「固定セルを定数で扱いたい!」という場面は結構多いです。データシートの上部に固定された、「対象月」や「更新日」のセルとかですね。常に同じRangeオブジェクトをくれる定数がほしいのですが、Constではできませんので、別の方法を使います。

If文は判定回数より読みやすさを最適化すべし

コードの読みやすさと処理速度のバランスに関するお話です。テーマは「Ifの判定回数にどれだけこだわるか」です。単純な比較時間は、実はほとんど0で、別にIfは重複しても問題ありません。Else地獄に陥らないよう、読みやすさを追求していきましょう。