和風スパゲティのレシピ

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

複数のシートをまとめてコピー/移動する

複数のワークシートを一度にコピー/移動する方法を紹介します。Worksheetsは配列を渡すと複数のシートを返してくれますので、そこからWorksheets(Array("集計表", "データ")).Copyと、単独シートと同じようにCopy/Moveメソッドを使用します。

すべてのシートに同じ処理を行う - For~Nextステートメント

ブック内のすべてのシートをループして、複数のシートに同じ処理を実行するコードを紹介します。たくさんのシートに同じ処理を行うのは、マクロならではの便利な技です。いくつかパターンを用意しましたので、お好きなコードをお持ち帰りください。

VBAの悩みはVBAerに聞け(Zoom配信)に登壇いたします - ExcelVBA

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

アクティブシートを変えずにシートを追加・コピーする

アクティブシートを変えずに、シートを追加・コピー・移動する方法を解説します。アクティブシートを全く変えることなくメソッドを実行する方法はありませんので、元のアクティブシートを記憶し、後でそのシートをActivateして地道に達成します。

新規シートを新しいブックに追加する

新しいシートを、新規のブックに追加する方法を紹介します。それには Set 新規シート = Workbooks.Add.Worksheets(1) というコードを実行します。Workbooks.Addでブックを追加すればそこにシートがありますので、そのシートを取得すればOKです。

エラーメッセージを(ググるために)コピーする方法

エラーが発生した際に、そのエラーメッセージをコピーする方法を紹介します。まずはエラー画面で[デバッグ]を押し、イミディエイトウィンドウに移動します。そこに?Err.Descriptionと入力することで、エラーメッセージを取得することができます。

セル範囲を縮小する/見出し行を除外する

セル範囲を縮小する方法(見出し行を除外する方法)を紹介します。Set 下から1行減らしたセル範囲 = セル範囲.Resize(セル範囲.Rows.Count - 1) や、Set 上から1行減らしたセル範囲 = セル範囲.Offset(1).Resize(セル範囲.Rows.Count - 1)で取得できます。

セル範囲を元の大きさを基準に拡大縮小する

セル範囲を、元の大きさを基準に拡大縮小する方法を紹介します。セル範囲を変更するには、RangeオブジェクトのResizeプロパティを使用し、「セル範囲.Resize(セル範囲.Rows.Count + 1 , セル範囲.Columns.Count)」というコードを実行します。

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

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

シート名を取得・変更する - Nameプロパティの使い方

ワークシートの名前を取得したり、変更する場合は、WorksheetオブジェクトのNameプロパティを使用します。シート名 = Worksheet(1).Nameというコードで名称を取得でき、Worksheet(1).Name = "変更シート名"というコードで名称を変更できます。

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

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

シートを削除する - Deleteメソッドの使い方

ワークシートを削除するDeleteメソッドの使い方を解説します。シートを削除する場合は、[削除するシート].Deleteを実行します。削除時の警告メッセージを表示せずにシートを削除する場合はApplication.DisplayAlerts = False/Trueでこのコードを挟みます。

重複しないよう連番付きでシート名を設定する

シートの名称設定は、すでに使われているシート名を指定するとエラーになってしまいます。これを回避するために、シート名が重複した場合は(2)、(3)、(4)…と連番を付与してからシート名を設定するコードを紹介します。

ブック内の最終(右端)シートを取得する

あるブックの最後のシートを取得する方法を解説します。これを一発で取得するWorkbooks("○○").LastSheetみたいなプロパティはありませんので、Set 最終シート = 指定ブック.Worksheets(指定ブック.Worksheets.Count)と地道に取得することになります。

文字列からシート名に使えない文字を消去する

ワークシート名には文字数と使用文字に条件があり、この条件に違反するとエラーが発生します。文字数の方は簡単で、Left関数で31文字以降をカットしてしまえばOKなのですが、禁則文字の方はReplace関数で該当の文字を1個ずつ消してあげる必要があります。

ワークシートを指定する方法7選

「ワークシートの指定方法」はいろいろなやり方があり、どれがいいというわけではなく一長一短があります。このいろいろなワークシートの指定方法を、「基本的だけど効果の高い方法」に厳選して解説していきますので、是非習得していってください。

偶数シートなど飛び飛びのシートをループする

偶数番のシートや、3つおきのシートなど、規則性がある飛び飛びのシートをループ処理するコードを紹介します。Forステートメントの「Step」を使うのが最も基本的で、For シート番号 = 2 To 6 Step 2 という記述で2,4,6番目のシートを処理できます。

隣のシート(前のシートや次のシート)を取得する

あるシートを変数などで持っているときに、隣(前後)のシートを取得する方法を紹介します。Worksheetオブジェクトには、これを一発で取得するプロパティが用意されており「Next/Previousプロパティ」を使うことで、前後のシートを取得することができます。

指定のシートが何番目のシートか調べる

指定のシートが何番目のシートか調べる方法を解説します。例えばActiveSheetが何番目のシートかを調べるには、ActiveSheet.Indexを取得します。このIndexで求めた数値は、グラフシートなどがなければWorksheets(x)のxに入れて使うことができます。

シートを新規ブックにコピー/移動する

ワークシートを新しいブックにコピー/移動する方法を紹介します。この方法はとても簡単で、Worksheets("○○").Copy でOKです。移動する場合は、Worksheets("○○").Move になります。

シートを別のブック(の末尾)にコピー/移動する

ワークシートを別のブックにコピー/移動する方法を紹介します。コピー・移動する際は、 Worksheetの、Copy/Moveメソッドを使用し、これらのメソッドの引数「After/Before」には別のブックのシートも特に制約なく指定できます。

シートを移動する - Moveメソッドの使い方

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

シートをコピーする - Copyメソッドの使い方

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

Ctrl+Shift+↓のセル範囲取得をVBAで行う方法

Ctrl + Shift + ↓によるセル範囲の選択はとても便利です。VBAでも使いたいのですが、残念ながら一発で取得するプロパティは無いため、スタートのセルと、Endプロパティで取得したセルを、Rangeプロパティで繋げることで取得します。

シート名をセル値から取得してWorksheetを指定する方法

セルの値からシート名を取得したくなることがあります。Worksheets(Range("A1"))と書きたくなるのですが、これではエラーになってしまいます。この解決策は非常に簡単で、Worksheets(Range("A1").Value)と、Valueプロパティ明示すればOKです。

キャメル記法とハンガリアン記法の違い

変数・関数などの名づけ方のルールである、キャメル記法とハンガリアン記法の違いを説明します。単語の区切りを分かりやすくするためのルールがキャメル記法で、どんな変数かを分かりやすくする」ためのルールがハンガリアン記法です。

システムハンガリアンとアプリケーションハンガリアンの違い

変数の名づけ方のルールである、システムハンガリアンとアプリケーションハンガリアンの違いを説明します。どちらも変数に接頭詞をつける命名で、lngApplePriceと変数の型を接頭するのが前者、yenApplePriceと変数の意味を接頭するのが後者です。

キャメルケースとスネークケースの違い

変数・関数などの名づけ方の種類(ルール)である、キャメルケースとスネークケースの違いを説明します。CamelCaseと、各単語の頭文字を大文字にするのがキャメルケース、snake_caseと、単語間にアンダーバーを入れるのがスネークケースです。

キャメルケースとパスカルケースの違い

変数・関数などの名づけ方のルールである、キャメルケースとパスカルケースの違いを説明します。camelCaseと、先頭の単語は小文字で始めるのがキャメルケースで、PascalCaseと、先頭の単語は大文字で始めるのがパスカルケースです。

明けましておめでとうございます。

明けましておめでとうございます。 今年もどうぞよろしくお願いいたします。