以前にも質問してアドバイスを頂き
http://msdn.microsoft.com/ja-jp/library/cc347606 …
をみてやってみたのですが全然うまくいきませんでした。
式 [テーブル1.フィールド1]=True
該当するものの背景を灰色
にしたいのですが
この「テーブル1」は「親フォーム」のサブフォームの中に入っている「子フォーム」上あるものなのです。
Sub test5()
With Forms("子フォーム").Controls("フィールド1").FormatConditions(1)
.BackColor = RGB(255, 255, 255)
End With
End Sub
を実行すると
マクロの式または visual Basic コードで参照されている ’子フォーム’フォームが見つかりません。
のエラーが返ります。
そもそも「親フォーム」「テーブル1」はどこに入れればいいでしょう?
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
>kurodai2さんには申し訳ありませんが、説明が重複する部分も含めて、通しで説明させて
DexMachinaさん、お気遣いどうもです。
fsjklsさん、1点補足してください。
最初からフィールド1に静的に、たとえば3通りの条件付書式を設定しておくことと、DexMachinaさんのコードの様にopen時に、フィールド1に設定し直す必要はどんな場面であるのでしょうか?
この部分が、理解しかねています。
open時に書いたのは、確認し易いのでしましたが、本来の目的は
どの場面で再設定の必要がある仕様なのでしょう?
私、実はそこが見えていません。
条件付書式を設定する前に条件によって
(「Select Case ステートメント」や「If...Then...Else ステートメント」などで)設定を変えたかったのです。
でもなんだかややこしくなってきました。
効率がわるいので一度見直して再度実行してみます。
何度もありがとうございました。
No.4
- 回答日時:
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」が重なってややこしいかもしれませんが)
「RGB(255,255,255)」は白なのですね。
いくらやっても変わらないわけです。
回答を読む分にはわかりやすく理解できたのですが
試してみましたがどうしてもできません。
わけもわからずややこしくしているので他所に原因があると思います。
一度整理してから改めて試してみます。
ありがとうございました。
No.3
- 回答日時:
Controls("フィールド1").FormatConditions(1)
この部分の(1)は そのコントロールに設定された
条件の何番目を参照するかの様です。
私は、条件を1つしか設定しなかったので、(0)として確認しました。
(1つ目が0 2目が1の様に0スタート)
これは、設定した条件の書式の設定が可能な方法ですが
リアルタイムに動作するのでしょうか?
(試したことはないですが、静的に条件設定しておけない場面が?です)
実際に、色を変えたい条件を 色数分設定しておけば良いと思うのですが
単純に設定できないほど複雑な条件なのでしょうか?
PS.
先の回答 こちらは 2007で試しました。
う~ん
どうもうまくできませんでした。
多分私がわけわからないくせに複雑にしているからだと思います。
なのでちょっと整理してみます。
何度もお付き合いいただきありがとうございます。
No.2
- 回答日時:
>式 [テーブル1.フィールド1]=True
こちらの環境ではダメですが
親フォームや子フォームの名称など正確に再現できているわけではないので置いておきます。
Sub test5()
With Forms("子フォーム").Controls("フィールド1").FormatConditions(1)
.BackColor = RGB(255, 255, 255)
End With
End Sub
上記モジュールはどこに書かれていますか?
こちらで確認したのは、サブフォームのフォームをデザインで開き
フォームを開くときのイベントに記述しました
With Me.Controls("フィールド1").FormatConditions(0)
.BackColor = RGB(255, 255, 255)
End With
子フォームに書くのであれば、me.でいけます
前提として、条件付き書式が設定してある必要があるので
あえて、VBAで色を指定する必要があるのでしょうか?
目的がよくわかりませんが、テストでは
最初 背景色赤の設定にして、VBAで 変更した背景色に
書式が変更されたことを確認できました。
再度ありがとうございます。
ちなみにアクセス2003を使用しています。
>上記モジュールはどこに書かれていますか?
標準モジュールに書いていました。
>VBAで色を指定する必要があるのでしょうか?
条件によって色を変えたりしたいのです。
教えていただいたサブフォームに記載して
コードを実行してみました。
エラーにもならないですが色も付かないです。
もうちょっといろいろやってみます。
No.1
- 回答日時:
以前の質問と言うのが解りませんが
少なくとも、
[テーブル1.フィールド1]=True
この[]の書き方はおかしい
条件付き書式が、サブフォーム云々に影響された記憶がないのですが
単純に、先ず、サブフォームに割り当てているフォームだけで
テストされてはどうでしょう
背景色を変えたいテキストボックスを選択し条件付き書式で
式 [フィールド1]=True
で、背景色の設定
これだけで問題ないと思いますが・・
(以前の質問のURLが解れば補足してください)
回答ありがとうございます。
え!!おかしいですか!?
VBAを使わずにフォームの条件付書式なら
[テーブル1.フィールド1]=True
でちゃんと色が付くのです。。。
ちなみに
以前の質問はこちらです→http://oshiete1.goo.ne.jp/qa4874751.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「年」と「月」だけの日付の表...
-
フォーム データシートビューで...
-
Accessの桁区切りについ...
-
【Access2003】書式設定(Forma...
-
Access2000のレポートで小数点...
-
アクセスのクエリで秒→時間、時...
-
Access テキスト型を日付/時刻...
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
差込印刷での全角表示について...
-
アクセスのエラー「クエリには...
-
エクセルデータをワードで差し...
-
2つのテーブルに共通するレコ...
-
アクセスで追加した項目に全て...
-
Excleピボットでデータのない部...
-
エクセルにおける「フィールド...
-
ACCESS 「パラメータの入力」...
-
Access テーブルを分割してエク...
-
ACCESSのクエリで抽出条件「ま...
-
デザインビューにてテーブルが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの桁区切りについ...
-
「年」と「月」だけの日付の表...
-
Word2010の差込印刷で金額にコ...
-
アクセス データエクスポート...
-
アクセスのクエリで秒→時間、時...
-
フォーム データシートビューで...
-
アクセス クエリ 時間の合計
-
AccessVBAでフィールドのデータ...
-
ユニオンクエリの書式について
-
アクセスのフォームで、桁数を...
-
Access テキスト型を日付/時刻...
-
アクセス集計クエリでの書式設定
-
ワードで入力できる文字数を制...
-
Access2016 フォームで特定の文...
-
アクセスで西暦データを和暦表...
-
Access2000のレポートで小数点...
-
Access2013にてハイパーリンク...
-
ACCESS 日付型でEXCEL出力
-
差し込み印刷のときに...
-
アクセス2003で、数値のプロパ...
おすすめ情報