test1は、A~X列に数字と条件付き書式をセットするマクロですが、途中のセルから色化けします。
原因がお分かりの方はご教授ください。どうもExcel2010のバグのように思われます。
バグならMicrosoftのどこに報告あるいは問い合わせれば良いでしょうか。

Sub test1()
Dim aRow As Long
Dim aCol As Long

With ActiveSheet
For aRow = 1 To 3
For aCol = 1 To 25
.Cells(aRow, aCol).Value = aCol
Call SetFormatConditionOfColor(aRow, aCol, "=1")
Next
Next
End With
End Sub

Public Sub SetFormatConditionOfColor(ByVal aRow As Long, ByVal aCol As Long, ByVal aFormula As String)
With ActiveSheet.Cells(aRow, aCol)
.FormatConditions.Delete

'一致するセル
.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:=aFormula
With .FormatConditions(1)
.Font.Color = 0
.Interior.Color = 13434879
End With

'一致しないセル
.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, _
Formula1:=aFormula
With .FormatConditions(2)
.Font.Color = 16777215
.Interior.Color = 16767843
End With
End With

End Sub

OS: MS WindowsXP Professional Service Pack3
Excel: Microsoft Office Professional Plus 2010 14.0.5128.5000(32ビット)

このQ&Aに関連する最新のQ&A

A 回答 (2件)

2010のバグでしょうね。



#ver2007では発生しないようですが
#2007以降の条件付き書式はバグの温床みたいで個人的には鬼門認定してます。:)

同じ処理をするには
Sub test2()
  With ActiveSheet.Range("A1").Resize(3, 25)
    .Formula = "=column()"
    .Value = .Value
    With .FormatConditions
      .Delete
      With .Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=1")
        .Font.Color = 0
        .Interior.Color = 13434879
      End With
      With .Add(Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=1")
        .Font.Color = 16777215
        .Interior.Color = 16767843
      End With
    End With
  End With
End Sub

のように、同条件で範囲をまとめて設定できる場合はできるだけ
まとめて処理してLoop処理を繰り返さないほうが良いでしょうね。
でも、このtest2自体も
Sub tes3()
  Dim i As Long
  For i = 0 To 30
    With ActiveSheet.Range("A1").Resize(3, 25).Offset(i * 3)


と繰り返してしまうと同じ現象が発生してしまいますね。

で、他の事例で通用するかどうかわかりませんが
一旦、Addしてしまった後に、Index指定で設定したほうが良さそう。
Sub SetFormatConditionOfColor(ByVal aRow As Long, _
               ByVal aCol As Long, _
               ByVal aFormula As String)
  With ActiveSheet.Cells(aRow, aCol).FormatConditions
    .Delete
    .Add Type:=xlCellValue, Operator:=xlEqual, Formula1:=aFormula
    .Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:=aFormula
    With .Item(1)
      .Font.Color = 0
      .Interior.Color = 13434879
    End With
    With .Item(2)
      .Font.Color = 16777215
      .Interior.Color = 16767843
    End With
  End With
End Sub



>バグならMicrosoftのどこに報告あるいは問い合わせれば良いでしょうか。

[マイクロソフト サポート オンライン]
https://support.microsoft.com/oas/default.aspx?& …
参照してください。
>マクロや VBA、Excel ピボットテーブル、サーバー製品との連携機能に関するお問い合わせは、
>無償サポートの対象外となります。
>コミュニティ サイト Microsoft Answers
>または 有償プロフェッショナル サポート をご検討ください。
http://www.microsoft.com/japan/services/support/ …
とあります。

インシデント制ですが、
http://support.microsoft.com/kb/875474/ja
『お客様のお問い合わせの内容が弊社製品の不具合によるものだった場合、インシデントは消費されません。』
だそうです。
私は利用した事がないので、経験談が必要なら他の方のレスを待ってみてください。
    • good
    • 1
この回答へのお礼

詳細なご回答ありがとうございます。
条件付き書式がバグの温床とは初めて知りました。
実際のプログラムではFormulaの部分が"=1"ではなく相対参照を使ったちょっと複雑な数式になっています。
ここで質問した色化けの不具合とは別に、セルをコピーすると相対参照のはずが絶対参照として書式がコピーされてしまうという不具合も生じています。
したがって条件付き書式を使うのは諦めることにしました。レスポンスは落ちますが他の方法を考えることにします。いろいろとありがとうございました。

お礼日時:2011/04/26 14:41

こんにちわ


 
条件付書式をVBAで操作するときは、セルをSelectしないと変になった経験があります。

でも、エクセル2000でしたから参考になるかどうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
問題のプログラムはエクセル2003までは正常に動作することを確認しています。
2007については未確認です。

お礼日時:2011/04/26 14:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q条件付き書式がうまくできません

よろしくお願いします
エクセルバージョンは2013です
昼からずっと、条件付き書式をやっていて、これだけうまくできません

古いバージョンでのやり方は見つけたのですが、2013ではどうやったらいいのかさっぱり進みません

やりたいことは
C17がoutという文字列ならK17は赤で表示
C17がinという文字列ならK17は青で表示

これを条件付き書式でやるにはどうすればいいのでしょうか?

Aベストアンサー

こんばんは!

K17セルだけでよいのでしょうか?
そうであれば
K17セルを選択 → 条件付き書式 → 新しいルール → 数式を使用して・・・ → 数式欄に
=C17="out"
という数式を入れ → 書式 → 塗りつぶしから「青」を選択しOK
次にK17セルを選択した状態で同じ操作を行います
条件付き書式 → ・・・中略・・・ → 数式欄に
=C17="in"
とし → 書式 → 塗りつぶしから「赤」を選択しOK

※ 余計なお世話かもしれませんが、K列すべてに同じような条件付き書式を設定したい場合は
K列すべてを範囲指定 → ・・・中略・・・ → 数式欄に
=C1="out"
のように範囲指定した最初のセル番地にします。
後の操作方法は一緒です。

※ 条件付き書式には優先順位があります。
今回の場合はどちらに転んでも問題ないと思いますが、
優先順位を付けたい場合は「書式ルール」ダイアログボックスで
条件付き書式をクリック → 「ルールの削除」の右側にある▼▲で優先順位を決めます。m(_ _)m

Q条件付き書式がおかしいのでしょうか

エクセル2003で、F36に、次のような条件付き書式を設定しました。
H36, J36, L36, P36にも同様な設定がしてあります。

=OR($F$36<>"", $H$36<>"", $J$36<>"", $L$36<>"",$P$36<>"") ←この場合はセル色は無し

="" ←この場合はセル色がオレンジ

このブックをエクセル2007で開き、実際に文字を入れてみると、F36のセル色は無しになるものの、他のセル色が一見したところ変わりません。
でも、ドラッグしてみたりすると全部のセル色が無しにできます。
(つまり条件付き書式は正常に動いていて、表示だけが変のようです)

また逆に、このように強制的に全部のセル色を無しにしておいて、F36の文字を削除すると、一見、F36のセル色だけがオレンジに戻ります。
でも、マウスでドラッグすると、全部オレンジ色に表示されます。

条件付き書式に問題があるのでしょうか。
教えてください。

Aベストアンサー

こんにちは。

こちらでは、2003と2007 の違いについての検証はされておりませんが、二つのバージョンの狭間の問題だという質問の趣旨だとしたら回答はできませんが、そういう問題が発生するとは思えないです。質問の趣旨では、2003では、可能だったものが、2007ではうまく行ってないと読めます。

しかし、もともと、条件付き書式の条件内容が明確ではありません。

問題は、どういうことをしたいのであって、条件付き書式の反応が違ったからと言って、それを回答者側が、その意を読見取ることは不可能です。(多くの人が回答すれば、その組み合わせは、数種類しかありませんから、その中で当てる人はいるでしょうけれども、どうしても、初回の回答する人が不利になります。)

条件付き書式を読む限りの内容は、

[F36 の条件付き書式]
-------------------------------------------------
条件1
=OR($F$36<>"", $H$36<>"", $J$36<>"", $L$36<>"",$P$36<>"")--パターン:色なし

条件2
=F36="" --- パターン:オレンジ (×「=""」)<--相対参照式
-------------------------------------------------
それぞれ残り(H36,J36,L36,P36)のセルに条件付き書式のコピーする。
---------------------------------------------------
つまり、5つのセルに、何もない状態の時は、セルのパターンの色がオレンジ。

F36, H36, J36, L36, P36 のどれかに文字が入れば、F36, H36, J36, L36, P36のすべてのセルのパターンの色が消える

という意味だと思うのです。

ただし、もしその条件なら、以下ひとつで足ります
========================================
=COUNTA($F$36,$H$36, $J$36, $L$36,$P$36) =0  パターン:オレンジ

もしくは、
=AND($F$36="", $H$36="", $J$36="", $L$36="",$P$36="")   パターン:オレンジ
========================================
負の条件は必要ありません。

>このように強制的に全部のセル色を無しにしておいて、F36の文字を削除すると、一見、F36のセル色だけがオレンジに戻ります。でも、マウスでドラッグすると、全部オレンジ色に表示されます。


「このように強制的に全部のセル色を無し」=本来は、「強制的」の意味が分かりません。どれかひとつのセルの文字や数字を入れる、という意味だろうと思います。

F36 の文字を削除する---F36 のみに文字が入っていたとして、F36のセルの中身を削除すれば、ドラッグコピーしたセル全体にオレンジに色はつきます。

こんにちは。

こちらでは、2003と2007 の違いについての検証はされておりませんが、二つのバージョンの狭間の問題だという質問の趣旨だとしたら回答はできませんが、そういう問題が発生するとは思えないです。質問の趣旨では、2003では、可能だったものが、2007ではうまく行ってないと読めます。

しかし、もともと、条件付き書式の条件内容が明確ではありません。

問題は、どういうことをしたいのであって、条件付き書式の反応が違ったからと言って、それを回答者側が、その意を読見取ることは不可能です...続きを読む

Qexcel:条件付き書式の適用範囲が変わる

指定した文字を打ち込んだ際セルが塗りつぶされるようにしているのですが条件付き書式で指定した範囲が変わってしまうため塗りつぶされなくて困っています
作業は「移動またはコピー」でシートを複製したりセル内の文字を書き換えたりドロップダウンリストから項目を選択するくらいです
複数のPCで同じファイルを開くこともあります(同時ではありません)

原因と対処法を教えてください

Aベストアンサー

添付図では、簡単な条件付き書式を下方にコピーし、コピーした後、セルを1つ削除してみました。意図しない適用先が表示されます。(当方Excel2010です)

このように、コピー&ペーストや削除を行ったタイミングごとに適用先のセル範囲が追加されていきます。一番最初に設定した範囲にセルで挿入したり削除したりする場合は範囲が増減するだけです。


以下、microsoftからです。

Excel 2007 条件付き書式をコピーした場合、以前より条件付き書式が増加する
http://support.microsoft.com/kb/2537195/ja

この中に、
●「原因」として、
 Excel2003までは、条件付き書式は3個までなので、選択範囲に全て同じ条件付き書式が設定されていれば、1つのルールとしてまとめて管理され、Excel2007以降は、範囲ごとにルールが保持されるため、結果、意図しない数の条件付き書式が作成される場合がある。

●「回避策」として、
 [ホーム]タブの[ルールのクリア]-[シート全体からルールをクリア]を選択し、同じ条件を設定するセルを適宜選択し、条件付き書式を設定します。

●「状況」として、
 この動作は仕様です。

との記載があります。

この「回避策」はいつも行っていません。全部クリアして最初からやり直せということですよね。
最初の条件付き書式をコピーして該当先に条件を貼りつけても結果は保障されません。重複で条件設定される場合もあります。


一通り作成が終わると、コピーや削除をしたセルを選択し、[ホーム]タブ>条件付き書式>[ルールのクリア]>選択したセルからルールをクリアを行い、最初に条件付き書式を設定したセルを選択し、「書式のコピー」をして該当セルに貼り付けています。「仕様」と書かれているのでしょうがないですね。(あまりいろんな箇所に設定しないのでできる方法かもしれません)

「書式のコピー」ボタンはダブルクリックすると継続して使えます。ESCかもう一度「書式のコピー」ボタンを押すと解除されます。この機能は結構使っています。


他に、
Excel 2010:条件付き書式コピペの弊害 をググってみてください。

添付図では、簡単な条件付き書式を下方にコピーし、コピーした後、セルを1つ削除してみました。意図しない適用先が表示されます。(当方Excel2010です)

このように、コピー&ペーストや削除を行ったタイミングごとに適用先のセル範囲が追加されていきます。一番最初に設定した範囲にセルで挿入したり削除したりする場合は範囲が増減するだけです。


以下、microsoftからです。

Excel 2007 条件付き書式をコピーした場合、以前より条件付き書式が増加する
http://support.microsoft.com/kb/2537195/ja

この中...続きを読む

Q【Excel】条件付書式が頭のセルにしか反映されない

毎度Excelの質問ですみません。

  1   2     3    4   5    6   7   8    9    10
A 10  20  30  40  50  60  70  80  90  100

上記のような表があり、セル【A10】を100%として、80%を越える場合に背景色を緑に、50%を越えたら黄色にしたいのですが。
【A1】から【A10】を選んで条件付き書式を

セルの値が・=(A10/1.25)・以上のとき・緑
セルの値が・=(A10/2)・以上のとき・黄

とつけるのですが、その設定が【A1】にしか反映されません。
個々につけるとちゃんと反映され、50にすると黄色に、80にすると緑になります。ものっそいめんどくさいです。
何故全部いっぺんに反映されないのか??
ちなみに一度全体に反映すると、あとはその数値を10にしようが20にしようが、緑のままになってしまいます。

なにか引っ掛かる部分があるのでしょうか?
ご回答お願い致します。

Aベストアンサー

セルが相対参照となっているからです、$A$10の絶対参照でお試し下さい。

Q条件付き書式が選択できない?!

ひょっとしたら初歩的な質問かもしれませんが、
教えて頂けませんでしょうか?

今、とあるExcelのファイルを見やすくする為に
条件付き書式を使って編集しようとしております。
『書式』→『条件付き書式』と行いたいのですが、
『条件付き書式』が選択できない状態になっております。
(グレーになっていて、選択不可になっている。)

このファイルに何か設定がされているのでしょうか?

Aベストアンサー

そのファイルは共有ファイルではありませんか?
共有ファイルの場合は共有を一旦解除しないと条件付書式は設定できません。

QExcelのセルの背景色が変わらない

以下作業をしてもセルの背景色が変更されません。
「セル」を選択→右クリック「セルの書式設定」→「パターン」タブ→色を選択→「OK」をクリックしても色が変更されません。
これは何故でしょうか?
ご存知あれば教えていただければ幸いです。

Aベストアンサー

ツールバー内のアイコンにバケツが斜めになってるアイコンも同じ塗りつぶし機能なんですが
こちらもダメでしょうか?

もしダメなら「シートの保護」が掛けられているかもしれません。

「ツール」→「保護」→「シート保護の解除」で大丈夫です。
もしパスワードを要求されたら、Book作成者に聞かないと編集できません。

Qエクセル 条件付書式の結果がすぐに反映されない

仮にセルA1に、次のような条件付書式を入力します。

数式が =A2<>"" のときにセルの色を赤にする。

そしてセルA2になにか値を入力しても、セルの色がかわりません(セルA1とセルA2の境界が赤になるときもある)。
条件付書式の入力が間違っているのかと思っていたら、

・スクロールしてセルA1とセルA2を画面上から見えなくした後、再度表示させる。
・印刷プレビューで確認し、再度表示させる

と、条件付書式が反映され、セルの色が指定どおり赤にかわっています。

WinNT Execel97 と WinNT Execel2000 両方で試してみましたが、結果は同じでした。
この現象を回避し、入力後、即条件付書式の結果が反映される方法はないのでしょうか?

どなたかよろしくお願いします。

Aベストアンサー

ツール→オプション→計算方法が手動になってませんでしょうか?

Excel2002で手動になっていると質問の現象が再現し、自動計算で解決しました。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。

QエクセルVBAで条件付書式の色を取得

セルに条件付書式で書式設定してあります。

A1は「値」100以下
A2は「値」500以下
A3は「値」1~10の間
B1は「数式」で=B1<A1
以下さまざまな数式があります。

条件に一致すると、セルの文字が「赤」になります。

このとき、
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Font.ColorIndex
End Sub
を実行しても、ColorIndexは、赤の「3」ではなく「-4105」と表示されます。
「-4105」は何もフォントの色を指定してないセルでも同じく表示されます。

質問1.条件付書式で、条件が一致して表示されたフォントの色は取得できないのでしょうか?

質問2.-4105とは何でしょうか?

Aベストアンサー

merlionXXさん、いつも、スレッドでおさがわせしてすみません。

今回は、別なところで、KenKen_SPさんのコードに感化されまして、私としては、良い勉強させていただいております。

さて、
>No4で教えていただいたコートが「数式が」しか対応しないなら、条件付書式の方を「セルの値が」を「数式が」に変えてやればいいわけですよね?

#9 のコードは、「数式が」でも、「セルの値が」でも、両方使えるはずだと思って作っております。

If .FormatConditions(i).Type = 2

というところで、振り分けをしています。

>「値」の定義?(等しい、間、以上、以下等)ってすべて数式で表せますよね?

一応、すべて当たってみたつもりですが、なにぶんにも夕飯前でしたので、万が一にも、おかしいようでしたら、
FormatCndOperand 関数の myOperand の中の配列の中にある文字列の等号式がおかしいことになります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報