VBA条件付書式の条件について

このQ&Aのポイント
  • VBAを使用して条件付書式の条件について調べています。
  • 集計表作成時に条件付書式が正しく働かない場合があり、解決方法を知りたいです。
  • VBAでセルに設定された条件付書式を判断し、条件分岐する方法を教えてください。
回答を見る
  • ベストアンサー

VBA 条件付書式の条件にあっているか

答えてねっとがなくなってしまったのですね、でこちらにたどり着きました。 ユーザー入力したアンケート(業者が作成)から集計表を作成しています。 A1 男性     B1 年齢 A2 ///////// A3 A4 /////// A1の性別B1の年齢から判断して条件付書式によりA3のみに答えを入力するよう白抜きになりA2/A4はもともとのフォーマットが網掛けになっています。 ただその際にA2/A4は網掛けになっているのですが場合によって回答が残っていることがあるので、集計表が正しくなくなってしまいます。 集計表に情報を取ってくる際に、条件付書式がTrueの場合、または書式 が白抜きになっている場合で条件分岐したいのですが、方法ご存知だったら教えてください。 方法としては下記のようになるかと考えています。 ・セルに条件付書式がひとつ以上設定されている。(今回は条件は一つです) ・その条件が、値か式か。(今回は式です) ・式であったら、その式をVBA上で実行してTrueかFalseか判断する  (または書式のタイプを取得する) ですが、書ける知識が乏しくて・・・ VBA本にもFormatConditionsは書いてなかったです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

補足ありがとうございます。 VBAで Worksheets("Sheet1").select Range("A1").Interior.Pattern とやれば、A1の網掛けパターン番号が判ります。 あとは、ifでそれを値を取得したいセルの網掛けパターン番号と比較すれば出来るかと思いますよ。 イメージとしては、 Worksheets("Sheet1").Select Range("A2").select if Range("A2").Interior.Pattern = 上で取ってきたパターン番号 then   何らかの処理 end if あとはforで回すなり、ベタ値で書くなり。 selectしちゃってるので、数があると重いのが玉に瑕です。 もしイメージと違うのであれば、「ツール」→「マクロ」→「新しいマクロの記録」で自分のやりたい事を(又は、それのヒントになること)記録してロジックを探してみてください。

kumico65
質問者

補足

早速のお返事ありがとうございます! 当初上記のようにVBAを書いて集計表をつくったのですが、 集計がおかしくなってしまいました。 というのは、条件付書式で回答されているA2のセルの書式は 上記のようなVBAのInterior.PatternはA1・A3と一緒です。(xlUpだったかな?) つまり、Interior.PatternだとA1/A2/A3ともに値を拾ってきてしまうので 集計がうまくいきません。 で、条件付書式が実行されているものだけ拾ってこれないかと思ったのです。 引き続きよろしくお願いします。

その他の回答 (1)

回答No.1

いくつか確認させてください。 >A2/A4は網掛けになっているのですが場合によって回答が残っていることがあるので、集計表が正しくなくなってしまいます。 ・回答というのは、「A3のみに答えを入力するよう白抜きになり・・・」の一文の"答え"のことでしょうか? ・回答が残っているとは、どんな状態のことをでしょうか? ・集計表が正しくなくなくなるとは、どう正しくなくなるのでしょうか?(そもそもどの状態が正しいのでしょうか?) ・A2,A3,A4にはどういった条件で値が入ってくるのでしょうか? 結果として何がしたいのかピンときませんし、前提がわからなすぎるので、なんと答えていいやらわかりません。

kumico65
質問者

補足

すいません、前提が足らなくて。 >・回答というのは、「A3のみに答えを入力するよう白抜きになり・・・」の一文の"答え"のことでしょうか?   はい”答え” = 回答です。 >・回答が残っているとは、どんな状態のことをでしょうか?   アンケートは口頭で行ったものをアルバイトさんが手入力しています。   その際に、性別と年齢を入力すると該当項目のみ白抜きになり、必要ない部    分は網掛けになるので、前回入力した回答を網掛けの下にあることに気づか   ず、そのままデータが網掛けの下に残っているのです。 >・集計表が正しくなくなくなるとは、どう正しくなくなるのでしょうか?(そもそもど   の状態が正しいのでしょうか?)   正しい状態は白抜きの部分のデータのみ集計表にもってくる状態です。   (条件付書式でTrueになったもののみ) ・A2,A3,A4にはどういった条件で値が入ってくるのでしょうか?   A2  =COUNTIF($A$1,"女*")>=1   A3  =COUNTIF($A$1,"男*")>=1   A4  =COUNTIF($A$1,"*男*")>+COUNTIF($B$1,"2*")>=1  です。  よろしくお願いします。

関連するQ&A

  • VBA 条件付書式の条件にあっているか

    条件付書式の数式に該当したセルの内容のみ拾ってくるVBAの作成を 試みています。 アンケート用紙は以下のようになっています。 A1 男性     B1 年齢 A2 ///////// A3 A4 /////// A1の性別B1の年齢から判断して条件付書式下記のよう式が入っています。  (A2  =COUNTIF($A$1,"女*")>=1   A3  =COUNTIF($A$1,"男*")>=1   A4  =COUNTIF($A$1,"*男*")>+COUNTIF($B$1,"2*")>=1  ) ただその際にA2/A4は網掛けになっているのですが場合によって前回の 回答を消去せずにアンケート表が作成されていることがあり、網掛け部分の 数値も拾ってきてしまい集計表が正しくなくなってしまいます。 集計表に情報を取ってくる際に、条件付書式がTrueの場合、または書式 が白抜きになっている場合で条件分岐したいので教えてください。 方法としては下記のようになるかと考えています。 ・セルに条件付書式がひとつ以上設定されている。(今回は条件は一つです) ・その条件が、値か式か。(今回は式です) ・式であったら、その式をVBA上で実行してTrueかFalseか判断する  (または書式のタイプを取得する) ですが、書ける知識が乏しくて・・・ よろしくお願いします。

  • 条件付書式 しましまともう1つ書式を設定

    エクセルの表をしましま(1行ごとにグレー)にしたいのですが、 条件付書式で、"=AND(MOD(ROW(),2)=1)" を設定すればしましまにできるところまでは分かりました。 ですが、すでに、*の書いてあるセルを網掛けにする条件付書式が入っているセルがあります。 (条件付書式で、セルの値が 次の値に等しい ="*") *の入っているセルは、網掛けで、かつ、しましまにしたいのですが、 そのような設定は可能なのでしょうか?

  • VBAがわかれば条件付書式は不要ですか?

    エクセルにおいて vbaで「Select Case ステートメント」や「If...Then...Else ステートメント」を組める場合 条件付書式は役にたたないですか? 条件付書式のほうが優れている場合もありますか? よろしくお願いします。

  • 条件付書式のVBA

    条件付書式のVBAについて質問させてください。 A1:A100に「晴れ」「曇り」「雨」「台風」「不明」と入力するとします、するとその行のいくつかセルに色をつけたいです。 たとえば、A1に「晴れ」と入力されたらB1、C1、(D1とばして)E1、F1・・・に色がつく。 できればVBAの式を教えていただけると大変助かります。 どうぞよろしくお願いいたします。

  • 条件付書式をVBAでセルに設定するときのルール

    図のような列があります。 C列にこだわっているわけではないのですが、その左側にある列で計算をしているという意味で、A、B列はあけただけです。 で、IF文で計算してある条件に合致するとC列で「TRUE」を表示し、合致していない場合はそのときの計算結果を表示させています(IF文的に正しくないので、計算したままの値が計算結果として表示される)。 この結果の見せ方として、これまではC列に「条件付書式」を手動で設定し、文字がTRUEのとき字を青くする表示にしていたのですが、同様の処理を行うExcel Bookファイルが多いため、VBAで条件書式を設定しようとし、次のような記述を実行しました。 すると、図のような結果になりました。 ---------------------------------------------- Sub TestSample() Dim i As Long i = 20 '実際には最終行はBookによって異なるので、 ’行末検索させせていますが、とりあえずここでは20としておきます。 With ActiveSheet Range(Cells(2, 3), Cells(i, 3)).Select With Selection     FormatConditions.Add Type:=xlTextString, String:="TRUE", _     TextOperator:=xlContains     .FormatConditions(1).Font.Color = RGB(0, 50, 255) ’ーーA     .FormatConditions(1).Interior.TintAndShade = 0   ’ーーB End With End With End Sub ---------------------------------------------- 質問が2つあります。 1. 背景がいわゆる「色なし」ではなく白くなっていますが、背景「色なし」かつ「罫線でかこむ」には、どのような記述をすればよいでしょうか 2. FormatConditions.Add Type:~~~~ につづく別の行(Aのところ)に「FormatConditions.」と記述すると実行できません。 マクロで条件書式の自動記録をやって参考にしたところ、添値のような(1)が記録されることに気が付き、それを真似して FormatConditions(1). としたところ、動作しました。 最初だけFormatConditionsで、なぜAのところはFormatConditions(1).となるのか、またAとBはどちらも「FormatConditions(1).」でダブっているのに処理上エラーを返さないのか、理屈がわかりません。 (1)がつく意味と、AとBはどちらも(1)で(ダブっても)動作するのか(逆にいえば、なぜ最初のFormatConditionsだけ、番号がついていないのか、たぶんデフォルトで(0)の意味?) について、このへんの仕組みの解説をよろしくお願いします。

  • 条件付書式が動かない

    A1:Z1にNか-を含むセルがあった場合に条件付書式を設定したいのですが、 以下のように書いてみましたが、動作してくれません。 ="COUNTIF(A1:Z1,""N"")+COUNTIF(A1:Z1,""-"")>0" B1のセルに以下のように記入すると、TRUE,FALSEが正しく表示されます。 =COUNTIF(A1:Z1,"N")+COUNTIF(A1:Z1,"-")>0 どうすれば条件付書式で使えますか??

  • 条件付書式だけのコピー

    Excelで既存のファイルに条件付書式を設定したいと考えています。 ただし元ファイルには、既に罫線・網掛け等をされているので、条件付書式だけを全体のセルにコピーしたいのです。 そのような方法はあるのでしょうか。 よろしくお願いします。

  • 条件付書式と罫線について

    エクセルのバージョンは2002です。 年齢構成表の作成中に不可解な現象が起こったので質問いたします。 現在、以下の様な式が多数のセルに入力されています(名前を持ってくる)。   =IF(ISERROR(VLOOKUP($A15&B$2,'元データ (3)'!$C:$I,7,0))=TRUE,"",VLOOKUP($A15&B$2,'元データ (3)'!$C:$I,7,0)) また、以下の条件付書式が設定されています。   「=””」ではない場合に細い罫線で囲む このような場合で、VLOOKUPで拾ってくる元データをずらすと、名前の位置が変わるのですが、 なぜか「ずらす前に表示されていたが、改めて空白になったセル」が、太い罫線で囲まれてしまいます。 条件付書式で引いている罫線とは違う太さです。 どうすればこの謎の罫線を引かないように出来ますか?教えてください・・・(再インストール以外で)。 説明も解りにくくて申し訳ないです。 ちなみに、「リスト形式及び数式を拡張する」のチェックは外しています。

  • Excel の『条件付き書式』について

    いつもお世話になっております。 Excelで以下のような表を作成しています。 『条件付書式』について教えてください。  列A  列B  列C   日付  曜日  空白セル 列Aに日付を入力して、その日が土日であったらセルに網掛けをするように設定しています。 列Bは、列Aに日付を入力すると自動で曜日を表示するようにし また、土日であったら自然に網掛けになるようにしました。 (列A・列Bをドラッグして『条件付書式』で設定)  『条件付書式』は…     条件1=WEEKDAY(A○,2)=7     条件1=WEEKDAY(A○,2)=6 …で設定。 列Cも同様にしたいのですが、どうもうまくいきません。 列A・列B・列Cとドラッグさせて『条件付書式』にしたのですが 土日でなくても網掛けになってしまいます。 列Cも土日であれば網掛けにする方法があれば アドバイスいただけますでしょうか。 (自動では無理なようでしたら地道に網掛けしていくとします。) よろしくお願い致します。

  • EXCEL2003 条件付書式が狂ってくる

    条件付書式は、見ためにどのセルに入っているのかわからないというのと、複数の条件付書式が入ると、なぜかその前に決めていた条件付書式が消えてしまっているということがあって、なかなか不便に思っています。(やりかたが悪いのかもと思うのですが) それで、VBAの entireculumn というのを見つけたのですが、 これで対応できるでしょうか? やりたい事は、 1 2*--------------------------- 3*--------------------------- 4 5 6*--------------------------- 7*--------------------------- 上記のように、「*」をつけた行にだけ、行全体に色をつけておく、 というのを条件付書式で、 「数式が」「=$A1="*"」 としたもので、その設定をしているシートに、横にずっと、いろんな関数を入れていってます。 ですが、関数を入れたり、そのプロセスで列挿入などすると、 色がずれてしまうのです。 その回避策として、VBAで最初に色の設定をしておけないでしょうか? 「*がある行だけに色をつける。」 よろしくお願いします。