kurodai2さんには申し訳ありませんが、説明が重複する部分も含めて、通しで説明させて戴きます。
(中途半端に話を引き継ぐと、多分かえってわかりにくくなってしまうと思うので)
サブフォームに使用しているフォームの「開くとき」イベントに以下を設定:
Private Sub Form_Open(Cancel As Integer)
On Error GoTo エラー処理
With Me!フィールド1
'条件を満たさない場合のデフォルトの背景色(白)を設定
.BackColor = RGB(255, 255, 255)
With .FormatConditions
'一旦、条件付書式を削除(フィールド1の条件付書式が幾つあっても一括削除)
.Delete
'条件付書式を改めて追加
.Add(acExpression, , "[フィールド1]=1").BackColor = RGB(200, 200, 200) '灰色
'条件付書式を追加する場合は以下のように追加(最大3件)
'.Add(acExpression, , "[フィールド1]=2").BackColor = RGB(255, 0, 0) '赤色
'.Add(acExpression, , "[フィールド1]=3").BackColor = RGB(0, 255, 0) '緑色
End With
End With
終了処理:
Exit Sub
エラー処理:
Select Case Err
Case 2439 '条件付書式が未設定なのに削除しようとした場合 → エラー発生箇所の次の処理に戻る
Resume Next
Case Else '上記以外のエラーの場合 → エラーメッセージを表示して処理を中止
MsgBox Err & ":" & Error$, , Me.Name & " Open"
Resume 終了処理
End Select
End Sub
・・・以上です。
【注意・参考】
1)「RGB(255,255,255)」は、「白」になります(kurodai2さんがNo.2の末尾で間接的に指摘済み)。
グレーを指定する場合は、上記のように「RGB(200,200,200)」等と指定してください。
(暗くする場合は値を小さく(最小0(×3)で黒)、明るくする場合は大きく(最大255(×3)で白)します)
2)ご質問の例では条件を「フィールド1=True」とするとのことでしたが、テキストボックス上では
ちょっとややこしいことになるので、数字の例に変えさせていただきました。
(「~=True」とした場合、条件が成立するのはテキストボックスに「-1」を入力した場合で、
「True」と入力した場合は不成立となるため(→条件式が「~="True"」だったら成立))
3)単に背景色をグレーにするだけなら上記の通り「BackColor」でOkですが、使用を不可に
したい場合は
.Add(acExpression, , "[フィールド1]=1").Enabled=False
と「Enabled」を使用します。
4)背景色だけでなく文字色なども切り替えたいという場合は、上記の
.Add(~).BackColor=RGB(~)
の行を、
With .Add(~)
.BackColor = RGB(~)
.ForeColor = RGB(~)
End With
という形にする必要があります。(「With~End With」が重なってややこしいかもしれませんが)
お礼
条件付書式を設定する前に条件によって (「Select Case ステートメント」や「If...Then...Else ステートメント」などで)設定を変えたかったのです。 でもなんだかややこしくなってきました。 効率がわるいので一度見直して再度実行してみます。 何度もありがとうございました。