和風スパゲティのレシピ

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

基本の書き方

シートをコピーする - Worksheet.Copy

ワークシートをコピーする「Copyメソッド」の使い方を解説します。[コピーするシート].Copy Before:=[ここで指定したシートの1つ前に挿入]、または[コピーするシート].Copy After:=[ここで指定したシートの1つ後ろに挿入]というコードを実行します。

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

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

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

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

一覧表データから帳票を出力するマクロ

処理ごとの解説ではなく、完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。初級者の方にも扱えるよう、この処理を動かすための最低限の書き方をしております。

セルに数式を入力する - Range.Formula

セルの数式をVBAで入力するための「Formulaプロパティ」の使い方を解説します。Range("D10").Formula = "=SUM(D4:D9)"のように、数式をRangeオブジェクトのFormulaプロパティに代入することで、数式をVBAから入力することができます。

ワークシート関数を使用する-WorksheetFunction

ワークシート関数をVBA上で計算するWorksheetFunctionオブジェクトの使い方を解説します。自分でコードを書くと大変だけど、関数だと1発で書けるというメリットに加え、シート関数は自分で書くより圧倒的に高速です。積極的に使っていきましょう。

セル範囲の数式をコピーする - Range.Formula

セルに入力されたシート関数を、VBAを使って別のセル範囲へコピーする方法を紹介します。D2=B2*C2と入力し、これをD列全体にコピーするには、そもそもコピーする必要もなく一気に「Range("D2:D7").Formula = "=B2*C2"」でOKです。

セル範囲の値だけをコピーする - Range.Value

セルの値だけを、範囲から範囲へコピーする方法を紹介します。A1:C3の正方形を、D4:F6にコピーするコードは、実は「Range("D4:F6").Value = Range("A1:C3").Value」で済みます。「値貼り付け」より速くて読みやすいので、こちらを使いましょう。

If~Else~EndIfを1行で書く - IIf関数

便利なのに知名度のイマイチな関数「IIf関数」を紹介します。IIf([条件式], [Trueのときの値], [Falseのときの値])と書きます。IIf関数は初めて見る方でも、()の中身はよく見たことがあると思います。早い話、「シート関数のIF」が、IIf関数です。

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

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

数値定数をまとめて管理する - 列挙型変数Enum

列挙型変数(Enum)の基本構文の書き方と、主な使い方について解説します。列挙型変数は数値(Long)の定数をまとめて定義するしくみです。根本的な使用目的は定数と同じです。直打ちの数字を無くすことで、読みやすくて、変更に強いコードを書くために使います。

定数(変更しない変数)を宣言する - Constステートメント

定数(Const)の基本構文の書き方と、主な使い方について解説します。例えば「消費税」が変更になったとき、プログラム中のすべての「0.08」を「0.1」にするのはとても大変です。これを定数にすることで、最初の宣言部だけ変更すればよくなります。