ワークシート
セルをダブルクリックした際にマクロを実行するにはBeforeDoubleClickプロシージャを使用します。引数TargetにダブルクリックされたセルがSetされるため、.Addressや.Row/.Columnで分岐を設定します。
特定のシートがアクティブになった時にマクロを自動実行する方法を解説します。シートモジュールの「Worksheet_Deactivate」を使う方法と、Thisworkbookの「Workbook_SheetDeactivate」を使う方法があります。
選択セルの変更時にマクロを自動実行するには、Worksheet_SelectionChangeを使用します。全シートのコードを一ヶ所に書きたい場合は、Workbook_SheetSelectionChangeを使用することも可能です。
特定のシートがアクティブになった時にマクロを自動実行する方法を解説します。シートモジュールの「Worksheet_Activate」を使う方法と、Thisworkbookの「Workbook_SheetActivate」を使う方法があります。
すべてのシートの保護を一括で設定/解除するには、ForEachでループしたすべてのシートでProtect/Unprotectメソッドを実行します。Protectについては許可する操作をひとつずつ選ぶ必要があるためご注意ください。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
ちょっと仕様がイマイチのCopyメソッドに、返り値がWorksheet、Before/AfterにWorkbookを渡せる(先頭/末尾にコピー)、非表示シートを渡せる、コピー後に保護を解除する機能を持たせた関数を作ってみましょう。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
アクティブブック内の全シートを1シートに結合するマクロを紹介します。見出し行を選択して実行することで見出し以下だけを結合します。内部で汎用関数を動かしており、シート名条件も指定できますのでご活用ください。
非表示のシートをコピー・移動しようとするとエラーが発生します。これを非表示のまま解消することはできませんので、一旦再表示 → コピー/移動 → 非表示に戻すという手順を踏んで対応します。
表示されているシートだけをループするにはForEach文で取得したWorksheetのVisibleプロパティを調べてTrueにシートだけに処理を実行します。他の条件も判定する場合はIf文を重ねるかAnd演算子を使用します。
シートの表示状態を切り替えるにはWorksheetオブジェクトのVisibleプロパティを使用します。表示Ture/非表示FalseのほかにVeryHiddenという設定があり、ユーザーがExcel上で再表示できない設定にもできます。
ワークシートをスクロールする方法を解説します。行列番号指定でスクロールしたい場合はScrollRow/Columnプロパティ、現在位置を基準にスクロールしたい場合は、Large/SmallScrollメソッドを使用します。
小計行や商品種別の切り替わる行など、データの区切りごとに改ページを挿入する方法を解説します。PageBreakプロパティで既存の改ページを判定しながら、条件を満たす行ごとに同プロパティで改ページを設定します。
ワークシートのウィンドウ表示モード「標準」「ページ レイアウト」「改ページ プレビュー」をVBAから設定する方法を解説します。設定にはWindowオブジェクトの「View」プロパティを使用します。
ワークシートを指定する方法としてシート名やシート番号を利用する他に「シートオブジェクト名」が使用できます。取り違えづらく、読みやすく、書きやすい最強のシート指定方法ですので是非とも採用してみてください。
3/18(土)20:00~ Zoom勉強会に登壇します。「配列入門!Array&Collection&Dictionary欲張りセット」と題し、まだ配列を使ったことがない方、CollectionやDictionaryに触れてみたい方、3つの特長と使い分けポイントを整理したい方に向けた講座を行います。
Worksheets("○○")でシートを取得したとき困るのが、「.」を入れても入力選択肢が出ないことです。この対処法として「変数にSet」「シートオブジェクト名」がありますが、第3の方法「Worksheet型にキャストする関数を作る」方法を解説します。
すべてのシートを一発で再表示するマクロを紹介します。For EachですべてのWorksheetを走査し、ワークシート.Visible = True によって再表示していくコードです。ブックの保護が有効だとエラーになるため、ProtectStructureを判定して回避します。
保護されたシートに再度Protectメソッドを実行した際、引数DrawingObjectsまたはScenariosを指定したときだけ保護が外れる不具合が存在します。Protectメソッドの引数「Contents」にTrueを渡すか、必ずUnprotectを挟むことで解消できます。
シートの保護でユーザーの操作を制限したシートにおいて、マクロのみ編集ができるように設定する方法を解説します。ProtectメソッドのUserInterfaceOnlyを使うことで実装できますが、この設定は保存することができないため注意する必要があります。
ブックの保護を設定/解除する方法を解説します。WorkbookオブジェクトのProtectメソッドを使います。ブックの保護という名称ですが、実際に禁止される操作は、ワークシートの追加、表示/非表示、削除、移動、名前変更になります。
ワークシートの保護設定の内容を調べる方法と、それを利用して同じ設定でシートを保護する方法を解説します。シート保護の各設定がONになっているかどうかを調べるには、WorksheetオブジェクトのProtectionプロパティを使用します。
ワークシートの保護を設定/解除する方法を解説します。シートを保護するにはWorksheetのProtectメソッドを使用します。簡単ですが非常に引数が多いメソッドですので、よく扱う方は全引数を設定するコードを保存しておきましょう。
Worksheetオブジェクトから呼び出す場合の、SelectメソッドとActivateメソッドの違いを説明します。どちらもアクティブシートを設定/変更できるメソッドですが、単独のシート選択はActivate、複数のシート選択はSelectがそれぞれ得意です。
すべてのシートをA1セル選択状態にするマクロを紹介します。For Eachで全シートをActivateし、Range("A1").Selectをして回るだけの簡単なコードですが、ウィンドウ枠の固定に対応する必要があるため、ActiveWindow.ScrollRow = 1も実行します。
アクティブシートを新規ブックにコピーするマクロを紹介します。コードはたったの一行で、ActiveWindow.SelectedSheets.Copyのみです。「個人用マクロブック」などに搭載しツールバーやショートカットキーへ登録して使ってください。
複数のワークシートを一度にコピー/移動する方法を紹介します。Worksheetsは配列を渡すと複数のシートを返してくれますので、そこからWorksheets(Array("集計表", "データ")).Copyと、単独シートと同じようにCopy/Moveメソッドを使用します。
ブック内のすべてのシートをループして、複数のシートに同じ処理を実行するコードを紹介します。たくさんのシートに同じ処理を行うのは、マクロならではの便利な技です。いくつかパターンを用意しましたので、お好きなコードをお持ち帰りください。
アクティブシートを変えずに、シートを追加・コピー・移動する方法を解説します。アクティブシートを全く変えることなくメソッドを実行する方法はありませんので、元のアクティブシートを記憶し、後でそのシートをActivateして地道に達成します。