以前にも質問してアドバイスを頂き
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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「年」と「月」だけの日付の表...
-
アクセスでフィールドを分けて...
-
Accessの桁区切りについ...
-
Access条件付き書式について
-
【2】 【VBA】アクセス 条...
-
ワードで入力できる文字数を制...
-
在庫管理と賞味期限管理
-
日付型のフィールドに空白を入...
-
accessvba 複数条件でFilterを...
-
アクセスのエラー「クエリには...
-
Accessで、フォームに情報を入...
-
EXCELの外部データ取得ができない
-
アクセス:クエリの結合とリレ...
-
最新日のデータのみ抽出するク...
-
PCゲームから音声ファイルを抽...
-
Access クエリの演算フィールド...
-
accessについて(超初心者です)
-
ACCESSでの別のテーブルのデー...
-
VBA 別シートの同じ日付の欄に...
-
SQL文で パラメータが少なすぎ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの桁区切りについ...
-
「年」と「月」だけの日付の表...
-
Word2010の差込印刷で金額にコ...
-
アクセスのクエリで秒→時間、時...
-
アクセス データエクスポート...
-
ワードで入力できる文字数を制...
-
アクセス クエリ 時間の合計
-
アクセス集計クエリでの書式設定
-
Access2013にてハイパーリンク...
-
ユニオンクエリの書式について
-
アクセスのフォームで、桁数を...
-
フォーム データシートビューで...
-
アクセスで西暦データを和暦表...
-
Access テキスト型を日付/時刻...
-
「yyyy/mm/dd hh:mm」が「yyyy/...
-
Access2000のレポートで小数点...
-
Accessでの入力規則について
-
Access2016 フォームで特定の文...
-
Access条件付き書式について
-
ピボットテーブル
おすすめ情報