和風スパゲティのレシピ

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

書式設定・表示設定

47本目:Window操作

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

49本目:条件付き書式の判定

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

92本目:セルの色を16進数で返す関数

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

RGB値とHTMLカラーコードを相互変換する

RGB値とHTMLカラーコード(#FFFFFF形式)を相互に変換する方法を解説します。RGB⇒HTMLにはHex関数、HTML⇒RGBには&H接頭辞を使います。RGB値とHTMLコードはそのままではRとBが逆順であることにご注意ください。

色をRGB値で設定する - RGB関数

背景色や文字色などをRGB指定で着色するには、設定したいオブジェクトのColorプロパティにRGB関数の結果を代入します。RGB関数の結果は整数値になっているため、これを調べれば定数や変数で指定することも可能です。

Format関数とTEXT関数の違い

VBA関数Formatとシート関数TEXTの違いを解説します。両者とも「値を指定の表示形式の文字列に変換する関数」でほとんど同じ仕様の関数です。分を専用で指定できる「n」を使えるのが一番大きな違いです。

文字列を指定の表示形式に変換する-Format関数

文字列を指定の表示形式に変換するFormat関数を使用します。TEXTと同様日付をyyyymmddや和暦、曜日に変換したり、数値の桁区切りや小数点桁数を調整したり、100円などの単位を付与するなど幅広い用途で使用できます。

セルの背景色を設定する - Interior.Color

セルの背景色を設定するにはRangeオブジェクトのInteriorプロパティを使用します。通常はRGB関数で指定するのが万能ですが、セルの背景色を別のセルに反映させるにはColorプロパティの値を代入させるだけでOKです。

セルに罫線を引く - Range.Borders

セルに罫線を引くにはRangeオブジェクトのBordersプロパティを使用します。Bordersの引数を省略すれば格子罫線全体を一括設定でき、LineStyleやWeightは省略できることも多いため、実際はほぼ1行のコードで実行できます。

第1行の書式を最終行までコピーする - Rows

書式のコピーにはPasteSpecialが思い浮かびますが、行ごとコピーする場合はAutoFillメソッドが使用できます。クリップボードを介さず安全高速ですので、フィルハンドルのようなコピー処理にはこちらを使用しましょう。

グラフ軸目盛りの範囲・間隔を統一するマクロ

せっかくの同形式グラフなのに、軸上限・軸下限・目盛り幅が違うとグラフ間で比較ができませんので、これを自動設定するマクロを紹介します。120%上限のグラフを100%上限に一括変更するときにも活用できます。

行高・列幅を設定する - RowHeight/ColumnWidth

セルの行高を設定するにはRangeオブジェクトのRowHeightプロパティ、列幅にはRangeオブジェクトのColumnWidthプロパティを使用します。セルの値に合わせて自動調整を行う場合はAutoFitメソッドを使用します。

行・列の表示/非表示を切り替える - Hidden

行・列の表示/非表示を切り替えるにはHiddenプロパティを使用します。Trueが非表示、Falseが再表示です。行/列全体に実行する必要があるため、Rows/Columns、EntireRow/Columnから実行してください。

NumberFormatLocalとNumberFormatの違い

NumberFormatLocalとNumberFormatの違いを解説します。両者とも「セルの表示形式」を設定するプロパティですが、G/標準、\、[赤]など日本語で表された表示形式を設定可能な点が違います。

セルの表示形式を設定する-NumberFormatLocal

桁区切りカンマの「#,##0」などセルの表示形式を設定するにはRangeオブジェクトのNumberFormatLocalプロパティを使用します。セル.NumberFormatLocal=セル.NumberFormatLocalでコピーも可能です。

1行おきに背景色を設定して縞模様にする

テーブル形式の表データに縞模様を付けるコードを紹介します。表の範囲を取得できる場合は表エリア.Rows、列のエリアを指定する場合はIntersectを利用して行ごとにRangeを取得し、偶数/奇数で判定して着色します。

表示されているシートのみをループする - Visible

表示されているシートだけをループするにはForEach文で取得したWorksheetのVisibleプロパティを調べてTrueにシートだけに処理を実行します。他の条件も判定する場合はIf文を重ねるかAnd演算子を使用します。

ワークシートをスクロールする - ScrollRow/Column

ワークシートをスクロールする方法を解説します。行列番号指定でスクロールしたい場合はScrollRow/Columnプロパティ、現在位置を基準にスクロールしたい場合は、Large/SmallScrollメソッドを使用します。

セル内文字列を文字ごとに操作する - Characters

セル内の文字列を文字ごとに操作する、RangeオブジェクトのCharactersプロパティを解説します。書式を設定するFont、テキストを取得、置換するText、削除・挿入を行うDelete/Insetメソッドなどが使用できます。

セル内の文字列を一部だけ着色する - Characters

セル内の文字列を一部だけ着色(書式変更)する方法を解説します。RangeオブジェクトのCharactersプロパティ、Fontプロパティを使用します。Bold、Name、Sizeで太字、サイズ、フォント種類も設定できます。

セル内の特定文字列だけを着色する - Characters

セル内の特定の文字列を着色する方法を解説します。Instr関数で文字列の位置を特定し、Charactersプロパティを用いて特定文字列だけを書式設定します。サイズ/太字/フォント/背景色なども同じように設定可能です。

改ページを挿入・解除・位置取得する-PageBreak

印刷時の改ページを挿入・解除したり、位置を取得する方法を解説します。WorksheetオブジェクトのH/VPageBreaksプロパティを使う方法と、RangeオブジェクトのPageBreakプロパティを使う方法があります。

データの区切りごとに改ページを挿入する

小計行や商品種別の切り替わる行など、データの区切りごとに改ページを挿入する方法を解説します。PageBreakプロパティで既存の改ページを判定しながら、条件を満たす行ごとに同プロパティで改ページを設定します。

改ページプレビュー・ページレイアウトを設定する

ワークシートのウィンドウ表示モード「標準」「ページ レイアウト」「改ページ プレビュー」をVBAから設定する方法を解説します。設定にはWindowオブジェクトの「View」プロパティを使用します。

VBA課題002「最も近い色を見つけよう!」回答コード

コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第1回課題共有会の課題でもあった「最も近い色を見つけよう!」問題です。

VBA課題001「スケジュール着色」回答コード

コミュニティ「Excel-Fun.xls*」にて毎月出題される、VBAの問題に対する私の回答ソースコードを掲載いたします。今回掲載するコードは第1回課題共有会の課題でもあった「スケジュール着色」問題です。

図形内テキストの不要な改行を制御するマクロ

図形内テキストが不要な位置で改行されてしまう問題は「テキストを図形からはみ出して表示する」「図形内でテキストを折り返す」の設定である程度抑えることができます。これを一括実行するマクロを紹介します。

テキストを図形からはみ出して表示する

図形内テキストの改行を制御するとき「テキストを図形からはみ出して表示する」をチェックし、「図形内でテキストを折り返す」のチェックを外す方法が便利です。これをVBAから設定する方法を解説します。

色(RGB値)の操作を補助するクラスを作る

クラスモジュールづくりのサンプルとして「色の操作を補助するクラス」を作ってみました。Property Get&Letプロシージャの勉強にピッタリな題材なので、練習がてらコードを眺めてみてください。

データ閲覧機能を1クリックで一括設定するマクロ

生CSVなどに対し、列幅自動調整、オートフィルターの設置、ウィンドウ枠の固定、印刷タイトルの設定、すべての列を1ページに印刷、上下左右の余白0をすべてセットするマクロを紹介します。