書式設定・表示設定
書式のコピーにはPasteSpecialが思い浮かびますが、行ごとコピーする場合はAutoFillメソッドが使用できます。クリップボードを介さず安全高速ですので、フィルハンドルのようなコピー処理にはこちらを使用しましょう。
せっかくの同形式グラフなのに、軸上限・軸下限・目盛り幅が違うとグラフ間で比較ができませんので、これを自動設定するマクロを紹介します。120%上限のグラフを100%上限に一括変更するときにも活用できます。
セルの行高を設定するにはRangeオブジェクトのRowHeightプロパティ、列幅にはRangeオブジェクトのColumnWidthプロパティを使用します。セルの値に合わせて自動調整を行う場合はAutoFitメソッドを使用します。
行・列の表示/非表示を切り替えるにはHiddenプロパティを使用します。Trueが非表示、Falseが再表示です。行/列全体に実行する必要があるため、Rows/Columns、EntireRow/Columnから実行してください。
NumberFormatLocalとNumberFormatの違いを解説します。両者とも「セルの表示形式」を設定するプロパティですが、G/標準、\、[赤]など日本語で表された表示形式を設定可能な点が違います。
桁区切りカンマの「#,##0」などセルの表示形式を設定するにはRangeオブジェクトのNumberFormatLocalプロパティを使用します。セル.NumberFormatLocal=セル.NumberFormatLocalでコピーも可能です。
テーブル形式の表データに縞模様を付けるコードを紹介します。表の範囲を取得できる場合は表エリア.Rows、列のエリアを指定する場合はIntersectを利用して行ごとにRangeを取得し、偶数/奇数で判定して着色します。
表示されているシートだけをループするにはForEach文で取得したWorksheetのVisibleプロパティを調べてTrueにシートだけに処理を実行します。他の条件も判定する場合はIf文を重ねるかAnd演算子を使用します。
ワークシートをスクロールする方法を解説します。行列番号指定でスクロールしたい場合はScrollRow/Columnプロパティ、現在位置を基準にスクロールしたい場合は、Large/SmallScrollメソッドを使用します。
セル内の文字列を文字ごとに操作する、RangeオブジェクトのCharactersプロパティを解説します。書式を設定するFont、テキストを取得、置換するText、削除・挿入を行うDelete/Insetメソッドなどが使用できます。
セル内の文字列を一部だけ着色(書式変更)する方法を解説します。RangeオブジェクトのCharactersプロパティ、Fontプロパティを使用します。Bold、Name、Sizeで太字、サイズ、フォント種類も設定できます。
セル内の特定の文字列を着色する方法を解説します。Instr関数で文字列の位置を特定し、Charactersプロパティを用いて特定文字列だけを書式設定します。サイズ/太字/フォント/背景色なども同じように設定可能です。
印刷時の改ページを挿入・解除したり、位置を取得する方法を解説します。WorksheetオブジェクトのH/VPageBreaksプロパティを使う方法と、RangeオブジェクトのPageBreakプロパティを使う方法があります。
小計行や商品種別の切り替わる行など、データの区切りごとに改ページを挿入する方法を解説します。PageBreakプロパティで既存の改ページを判定しながら、条件を満たす行ごとに同プロパティで改ページを設定します。
ワークシートのウィンドウ表示モード「標準」「ページ レイアウト」「改ページ プレビュー」をVBAから設定する方法を解説します。設定にはWindowオブジェクトの「View」プロパティを使用します。
コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第1回課題共有会の課題でもあった「最も近い色を見つけよう!」問題です。
コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第1回課題共有会の課題でもあった「スケジュール着色」問題です。
図形内テキストが不要な位置で改行されてしまう問題は「テキストを図形からはみ出して表示する」「図形内でテキストを折り返す」の設定である程度抑えることができます。これを一括実行するマクロを紹介します。
図形内テキストの改行を制御するとき「テキストを図形からはみ出して表示する」をチェックし、「図形内でテキストを折り返す」のチェックを外す方法が便利です。これをVBAから設定する方法を解説します。
クラスモジュールづくりのサンプルとして「色の操作を補助するクラス」を作ってみました。Property Get&Letプロシージャの勉強にピッタリな題材なので、練習がてらコードを眺めてみてください。
生CSVなどに対し、列幅自動調整、オートフィルターの設置、ウィンドウ枠の固定、印刷タイトルの設定、すべての列を1ページに印刷、上下左右の余白0をすべてセットするマクロを紹介します。
セルの書式設定の配置タブにある、水平/垂直位置や、文字の折り返し、縮小して全体表示、縦書きなどの文字方向設定をVBAで行う方法を解説します。例えば水平方向を中央寄せにするには、Range.HorizontalAlignment = xlCenterを実行します。
すべてのシートを一発で再表示するマクロを紹介します。For EachですべてのWorksheetを走査し、ワークシート.Visible = True によって再表示していくコードです。ブックの保護が有効だとエラーになるため、ProtectStructureを判定して回避します。
条件付き書式を、背景/文字色をセル書式として残して削除する方法を解説します。条件付き書式を通常書式に変換するとも言えます。表示色DisplayFormatが元のFormatと異なる場合に、FormatにDisplayFormatを代入することで実現できます。
シート最上部を常に表示する設定は、ディスプレイ用の「ウィンドウ枠の固定」と、印刷用の「印刷タイトル」の2つの設定があります。この2つの設定は同じ位置に設定することが多いので、同時設定するショートカットを作ってしまいましょう。
上下左右の印刷余白を0にするマクロを紹介します。PageSetupオブジェクトに○○Marginというプロパティが6つあるので、それをすべて0にするだけです。マウスだと20回以上クリックが必要な作業をワンクリックにできるのはとても便利ですね。
For Eachで全図形を処理したとき変な動きをする、Shapes.Countを数えるとなぜか1個多い、入力規則の▼が消えてリストから選べない、あたりにお困りの方は、Shapesがドロップダウンリストの▼を含む罠に落ちていないかご確認ください。
「外枠が実線で中が細い点線の格子罫線」を自動で引くマクロを紹介します。普通の格子罫線は印刷すると太くて気になりますが、一番細い点線を使うと、印刷時は点線ではなく細い直線になります。表をキレイに印刷したいときは、この設定で罫線を引きましょう。
選択中のセル範囲を、1枚の用紙にクイック印刷するマクロを紹介します。「選択範囲を印刷範囲に⇒上下左右の余白を0に⇒水平方向をセンタリング⇒シートを1ページに印刷に⇒範囲が横長なら用紙を横に⇒印刷する」を一括で行うマクロです。
機械的に書けるコードは、マクロをマクロに書いてもらうテクニックが使えます。「セルの文字色・背景色を設定する」マクロを作るとき、①使う色のRGB値を調べる、②その値で着色するコードを書く、の2つを、セットでマクロにやってもらいましょう。