条件付き書式の条件によって設定されている書式になります。VBAで、この条件付き書式によって設定された書式を取得します。これが取得できるようになったのは、Excel2010からですので、このページで紹介するVBAコードはExcel2010以降でのみ有効なものです。実際の画像このブックでは、テーマも配色も変更しています。別シートを参照している条件付き書式も設定してあります。新規ブックなので、テーマや配色は標準で作成されます。目立つので、直ぐに気が付くのが色の変化です。変化がない部分は、基本色やその他の色(RGB指定)で設定している部分になります。画像ではわかりづらいですが、コジックがPゴシックにも変わってしまっています。右半分は、いろいろな条件付き書式を設定していますが、アイコンセットはアイコンなので、さすがに変化していません。そもそも、条件付き書式によって設定された書式を取得する必要があるのかという疑問があります。このようなシーンを想定してみました。想定シーン何らかの資料(提出資料、プレゼン資料)を作ることになりました。資料作成の素材集めとして、作成済のExcelを30ファイル集めました。各ブックには、複数シートが入っているが、必要なシートはその中の1シートか2シート程度。必要なシートだけを集めたブックを新たに作成することにしました。想定シーンの作業での問題点は、シートをコピペで他のブックに移したときの問題点になります。問題点1.シート間の数式がある場合、後でリンク切れを起こす。2.使用しているテーマが違う場合、色・フォントが変更されてしまう。3.条件付き書式で、他のシートを参照しているとリンク切れとなる。解決方法1.値貼り付けをすれば良いです。これだけなら手作業でも問題ありません。配色を使用したカラー設定を固定カラーに再設定Excel2007以降なら配色を選択して作成した場合、作成したシートを他のブックに移すと、色が変わってしまいます、そこで、配色ではなく、RGB値で色を再設定することで、元々の色をそのままにして、他のブックに移すことが出来ます。以下は、この目的で色を再設定するマクロVBAになります。ここでは、グラフの色も変更しています。3.今までこれが解決できませんでした。Excel2010で、条件付き書式によって設定された書式を取得することができるようになっています。今回のメインテーマとなります。条件付き書式によって設定された書式の取得方法Rangeオブジェクトのプロパティに、Excel2010で追加された、DisplayFormatプロパティこれを使う事で、条件付き書式で表示された書式を取得できるようになっています。DisplayFormatプロパティは、DisplayFormatオブジェクトを取得します。表示されている書式を取得することが出来ます。オブジェクトについて、セル内の文字列の配置で縦または横位置を均等に割り付けるときに、文字列を自動的にインデントするかどうかを示す値を返します。値の取得のみ可能です。オブジェクトを返します。オブジェクトを返します。値の取得のみ可能です。オブジェクトを返します。値の取得のみ可能です。オブジェクトを返します。値の取得のみ可能です。ビットの整数を取得します。値の取得のみ可能です。オブジェクトを返します。値の取得のみ可能です。オブジェクトについて、ワークシートが保護されているときに数式を非表示にするかどうかを示す値を返します。値の取得のみ可能です。オブジェクトの水平方向の配置を表す値を返します。値の取得のみ可能です。レベルを表す値を返します。値の取得のみ可能です。オブジェクトを返します。値の取得のみ可能です。オブジェクトがロックされているかどうかを示す値を返します。値の取得のみ可能です。オブジェクトに、結合されたセルが含まれているかどうかを示す値を返します。値の取得のみ可能です。オブジェクトの表示形式を表す値を返します。値の取得のみ可能です。これが正しく取得できませんでした。オブジェクトの表示形式を、ユーザーの言語の文字列で表す値を返します。値の取得のみ可能です。オブジェクトの文字列の向きを表す値を返します。値の取得のみ可能です。指定されたオブジェクトの親オブジェクトを取得します。値の取得のみ可能です。オブジェクトの読み取り順序を返します。値の取得のみ可能です。オブジェクトについて、使用可能な列幅に収まるように自動的に文字列を縮小するかどうかを示す値を返します。値の取得のみ可能です。オブジェクトを含む値を返します。オブジェクトの垂直方向の配置を表す値を返します。値の取得のみ可能です。オブジェクトについて、文字列を折り返すかどうかを示す値を返します。値の取得のみ可能です。以下で、シートコピーの問題点を解決するためのVBAコードを掲載します。・グラフおよび図形の色については対応していません配色を使用したカラー設定を固定カラーに再設定Excel2007以降なら配色を選択して作成した場合、作成したシートを他のブックに移すと、色が変わってしまいます、そこで、配色ではなく、RGB値で色を再設定することで、元々の色をそのままにして、他のブックに移すことが出来ます。以下は、この目的で色を再設定するマクロVBAになります。こちらを見ていただければ理解していただけると思いますが、VBAコードが非常に長くなりますし、全てのグラフに対応するのはとても大変です。必要な場合は、上のページを参考にして、下のサンプルに組み込んでみて下さい。・塗りつぶしの効果とパターンは対応しない通常書式、条件付き書式ともに対応しません。VBAが面倒な割に、実際に使っている人は少ないと思うので。・条件付き書式の表示形式は取得できないこれはExcelのバグなのか、単なる実装漏れなのか・・・でも、下のサンプルでは、別の方法で無理矢理対応しています。FunctionFunctionプロシージャーになります。CopySheet戻り値は、、コピーで作った新規ブックです。詳しく解説出来ませんので、VBA内のコメントを参考にしてVBAを読んでください。「条件付き書式の表示形式は取得できない」、と書きましたが。何度か確認しましたが、DisplayFormatの表示形式のプロパティ.NumberFormat.NumberFormatLocalどちらも正しく取得できないようです。条件付き書式で設定している表示形式に照らして、一致していればその表示形式を設定するようにしています。この部分は、結構きわどい処理となっていますので、書式によっては有効とならない場合もあるかもしれません。使い方アクティブシートを新規ブックにコピーします。SubCopySheetの戻り値は、コピーで作った新規ブックになります。新規ブックは、シートをMoveして作成しているので、シート数は1つです。複数シートの処理や複数ブックの処理が必要な場合は、Callする側で制御すれば、割と簡単に実装できるはずです。書式のパターンは非常にたくさんあるので、全てをテストはしていません。バグや考慮漏れの指摘があれば随時修正します。いう処理のVBAを書いていると良く分かることがあります。それは、Excelに機能があるからと言って、何でも使うのはどうかという事です。基本的な機能・誰でも知っている機能だけを使ってブック・シートを作ったほうが良いという事です。することで、メンテナンス性も良くなるし、ファイルを誰かに引き継いだ時にも苦労しなくて済むという事です。条件付き書式で変更された書式を取得するこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。条件付き書式で変更された書式を取得するこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。