
アクティブ(カレント)レコードに条件付き書式で色を付けるには?
フォームに乗ってるサブフォームに対して、レコードが移動したら条件付き書式をつけたいです。
サブフォームのCurrentイベントに
//////////////////////////////////////////////////////
Private Sub Form_Current()
Dim avarContorol As Variant
Dim iLoop As Integer
Dim ctl As Control
Dim mystr As String
Dim i As Integer
ReDim avarControl(Me.Controls.Count - 1)
For i = 0 To Me.Controls.Count - 1
avarControl(i) = Me.Controls(i).Name
Next i
For iLoop = 0 To UBound(avarControl)
With Me.Controls(avarControl(iLoop)).FormatConditions
.Delete
'コントロールが文字列型ならダブルコーテーションでくくる
With .Add(acExpression, , "[名前] = """ & Me.Controls("名前") & "")
.BackColor = 255
End With
End With
Next iLoop
End Sub
//////////////////////////////////////////////////////
としたのですが、エラーにもならないけど、色もつかないです。
予想としては赤になると思ったのですが・・・
しかも、2010は設定した条件付き書式をフォームビューでは確認できないようです。
フォームビューで設定した条件付き書式は保存されないから、デザインビューで確認しようとしても、見れません。
サブフォームに対して行おうとしているからできないのでしょうか?
どこが間違ってるか教えていただけますか?
ご回答よろしくお願いします。
No.1ベストアンサー
- 回答日時:
まず、間違ってそうな箇所は
"[名前] = """ & Me.Controls("名前") & ""
↓
"[名前] = """ & Me.Controls("名前") & """"
後、条件付き書式を設定できないコントロールは存在しないのでしょうか?
以下、総括的に
カレント行全体の背景色を変えてハイライト表示させるには?
http://www.tsware.jp/tips/tips_392.htm
この内容に合わせるために、苦労されていたのでしょうか
配列にコントロールを求めて・・・されていますが、一気にやられてみてはどうでしょう
例えば、
Private Sub Form_Current()
Dim ctl As Control
For Each ctl In Me.Section(acDetail).Controls
With ctl
Select Case .ControlType
Case acTextBox, acComboBox
With .FormatConditions
.Delete
With .Add(acExpression, , "[名前] = """ & Me.名前 & """")
.BackColor = 255
End With
End With
End Select
End With
Next
End Sub
背景色を変えるのは、「詳細」に配置したテキストボックス/コンボボックスだと思うので、
Me.Controls ではなく「詳細」に絞った Me.Section(acDetail).Controls を処理範囲とします。
で、コントロールが、テキストボックス/コンボボックスなら条件付き書式を・・・・
また、以下の様な方法もあります。
フォーム読み込み時に、基本となる条件付き書式を設定しておいて、
(設定したコントロールの目印として Tag に文字列を設定)
レコード移動時では、条件を書き換える・・・・
( Tag に文字列が設定されているコントロールを探し出して・・・)
Private Const SetFMTC As String = "SetFormatConditions"
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Section(acDetail).Controls
With ctl
Select Case .ControlType
Case acTextBox, acComboBox
With .FormatConditions
.Delete
With .Add(acExpression, , "[名前] = """"")
.BackColor = 255
End With
End With
.Tag = SetFMTC
End Select
End With
Next
End Sub
Private Sub Form_Current()
Dim ctl As Control
For Each ctl In Me.Section(acDetail).Controls
If (ctl.Tag = SetFMTC) Then
ctl.FormatConditions(0).Modify acExpression, , "[名前] = """ & Me.名前 & """"
End If
Next
End Sub
なお、一般的なのか・・・・良く使う方法は
不可視のテキストボックス「txt1」を設置して、
読み込み時にでも、条件付き書式 [名前] = [txt1] を設定しておき、
レコード移動時に、Me.txt1 = Me.名前 を代入
これらをする事で、条件付き書式部分を書き換えなくても実現できるものになります。
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Section(acDetail).Controls
With ctl
Select Case .ControlType
Case acTextBox, acComboBox
With .FormatConditions
.Delete
With .Add(acExpression, , "[名前] = [txt1]")
.BackColor = 255
End With
End With
End Select
End With
Next
End Sub
Private Sub Form_Current()
Me.txt1 = Me.名前
End Sub
以下、まとめて書かれていますので参考になると思います
カレント行の背景色の変更 その2
http://hatenachips.blog34.fc2.com/blog-entry-20. …
カレント行の背景色の変更
http://hatenachips.blog34.fc2.com/blog-entry-18. …
また、条件付き書式を使わない方法も紹介されてます。
カレント行の背景色の変更 その3
http://hatenachips.blog34.fc2.com/blog-entry-21. …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
-
4
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
5
AccessのFormの設定で、開いた時に必ず最大化で表示する方法が分からず困っています
Access(アクセス)
-
6
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
7
どこにもフォーカスを当てたくない
Access(アクセス)
-
8
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
-
9
ツリー構造をRDBで表現するには?
その他(データベース)
-
10
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
11
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
12
Access でレコードセレクタが押されたときのイベントは?
その他(プログラミング・Web制作)
-
13
ACCESSで、フォームのレコードごとに背景色変更
その他(データベース)
-
14
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
15
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
16
Access ¥マークを表示しない
Excel(エクセル)
-
17
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
18
Accessでレコードが更新された時に発生するイベント。
その他(データベース)
-
19
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
20
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スケッチスタイルの有効化
-
ワードで棒線が直接文章に入る...
-
差し込み印刷で反映されないフ...
-
箇条書きの記号の色が勝手に変わる
-
Excelの集計がSUM関数で、1円...
-
Access→Excelへエクスポートす...
-
【エクセル】コメントの初期(...
-
WORD 書式の設定ではない黄色の...
-
「テーブルとして書式設定」で...
-
エクセル 電話番号に市外局番...
-
C言語のprintf()関数の「f」の意味
-
エクセルで和暦表示の桁合わせ...
-
エクセルで文字列と数字が混在...
-
Word アウトラインの定義
-
一太郎で内容証明を作成したい...
-
エクセル
-
課題で、Wordを使って提出する...
-
マイクロソフト ワードの引き...
-
スタイル同じなのに表示が異なる
-
【EXCEL2003】セルの書式設定で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スケッチスタイルの有効化
-
差し込み印刷で反映されないフ...
-
Excelの集計がSUM関数で、1円...
-
ワードで棒線が直接文章に入る...
-
【エクセル】コメントの初期(...
-
エクセルで和暦表示の桁合わせ...
-
【EXCEL2003】セルの書式設定で...
-
「テーブルとして書式設定」で...
-
Access→Excelへエクスポートす...
-
スタイル同じなのに表示が異なる
-
OpenOfficeの用紙のサイズ変更で
-
Open office Writerで余白の調整
-
箇条書きの記号の色が勝手に変わる
-
WORD 書式の設定ではない黄色の...
-
箇条書きや段落番号の行頭文字...
-
課題で、Wordを使って提出する...
-
<条件追加/スプレッドシート>...
-
【エクセル】バブルチャート上...
-
教えてください! アクセスの書...
-
エクセル 電話番号に市外局番...
おすすめ情報