和風スパゲティのレシピ

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

プロシージャ分割

Worksheets("○○"). の入力選択肢を出す方法

Worksheets("○○")でシートを取得したとき困るのが、「.」を入れても入力選択肢が出ないことです。この対処法として「変数にSet」「シートオブジェクト名」がありますが、第3の方法「Worksheet型にキャストする関数を作る」方法を解説します。

Sub/Functionプロシージャを呼ぶのにかかる時間

マクロをSub分割したり自作関数を作り始めると、Sub/Functionを呼ぶ時間分処理が遅くならないか心配になります。しかし、検証してみると1,000万回Callして1~2秒程度しか要さないため、プロシージャを呼ぶのにかかる時間は0だと思ってOKです。

2/11(土)20:00~ VBA勉強会「日本語変数のすすめ+母国語で作る自作関数入門」

2/11(土)20:00~ Zoom勉強会に登壇します。「日本語変数のすすめ+母国語で作る自作関数入門」と題し、このブログのテーマである日本語変数のメリットデメリットの解説と、それを利用して簡単な自作関数の作り方講座を開催いたします。

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

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

12/11(土)20:00~ VBA勉強会「Sub/Functionの使い方入門!」

12/11(土)20:00~ Zoom勉強会に登壇します。「Sub/Functionの使い方入門!」と題し、Functionを一度も使ったことがない方や、1マクロ1Subで作っている方向けの入門解説を行います。無言OK聞き専OKですのでお気軽にご参加ください。

最終行/最終列を取得する万能関数を作る

ひと口に最終行と言ってもいろいろなやり方があり、UsedRange、End、Range、CurrentRegion、AutoFilterなどが考えられます。こういう処理は関数化が便利ですが、せっかくなので1本で何でもやってくれる万能関数を作ってみましょう。

文字列操作の汎用関数集

文字列操作でよく出てくる処理の汎用関数集を紹介します。例えば左から指定の文字まで取り出す処理を「産地 = Left文字列まで("愛媛産みかん", "産")」という関数で済ませて、コードを書きやすく&読みやすくするためにご利用ください。

2/26(金)20:00~ VBA勉強会「初心者向けオートフィルタの使い方」

本日20:00~VBAの悩みはVBAerに聞け(Zoom配信)に登壇いたします。他者がコーディングする様をリアルタイムに見、その場で解説を聞くためのイベントです。内容は、初級者向けに、オートフィルターの基本コードを解説します。

関数(プロシージャ)分割は思ってるより簡単です

関数分割が難しいのは「なにを関数にすればいいのかわからない」という、目的の理解が最大の悩みと感じます。この目的を「処理のまとまりに名前をつけられること」と捉えて、母国語の力を借りてコードを読めば、関数化の本質がつかめると思います。

ByVal(値渡し)とByRef(参照渡し)の違い

関数に引数を渡す際の渡し方である、ByVal(値渡し)とByRef(参照渡し)の違いを説明します。ざっくり説明すると、関数に値(引数)を渡すときに、「変数に書いてある情報だけを渡すのが値渡し(ByVal)」、変数をそのまま渡すのが参照渡し(ByRef)です。

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

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

ParamArrayを別関数のParamArrayに渡す方法

引数の数を可変にするParamArrayキーワードで受け取った引数を、別の関数のParamArrayに渡す方法を解説します。といいつつ私の調べた限り完全解答はなく、どうしても呼出元関数をいじる必要が出るようです。ひとつのヒントとなれば幸いです。

引数を好きな個数渡せる関数を作る-ParamArray

Sub、Functionなどを作成するとき、任意の数の引数を渡す方法を解説します。ParamArray 引数名() という引数を作ると、呼び出す側では複数の引数として渡すことができ、プロシージャ内で実際に使うときは、配列として扱うことができます。

Sub/Functionの引数を省略可能にする-Optional

Sub、Functionなどの引数を省略可能にするOptionalの使い方を解説します。「引数名 As データ型」という普段の宣言部分に、先頭にOptionalをつけると、その引数は省略可能になり、後ろに「= ○○」をつけると省略時の値を設定することができます

Property Let と Property Set の違い

プロシージャの種類である、Property LetとProperty Setの違いを解説します。両者とも、プロパティの取得・設定を対となる2関数で行う仕組みのうちの、「値の設定」を担うプロシージャですが、対象とするプロパティがオブジェクトかどうかが異なります。

Function と Property Get の違い

プロシージャの種類である、FunctionとProperty Getの違いを解説します。どちらも、任意の数の引数を受け取り、1つの値を返します。Propertyの本来の目的である、同じ名前のProperty Let/Setプロシージャを用意できる点が、最も大きな違いです。

帳票出力マクロをプロシージャ分割して書く

完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。関数(プロシージャ)分割を使って、メンテナンス性を意識したコードにしておりますので、参考にしてみてください。

汎用マクロ・便利ツール用の共通関数について

本ブログで紹介している、汎用マクロ・便利ツールは、特に頻出の処理を、共通の関数として抽出して使っています。共通関数のソースコードと解説を以下に記しておきますので、コードの説明が読みたい方はご利用ください。