• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「フォーカスのあるフィールドに色を付ける」vba)

VBAで「フォーカスのあるフィールドに色を付ける」条件を付ける方法

このQ&Aのポイント
  • 質問者は、帳票フォームの全てのコントロールに条件付き書式を適用し、「フォーカスのあるフィールドに色を付ける」方法をVBAで実現したいとしています。
  • 質問者は、コントロールが多いためVBAでループさせたいがコードが分からないと述べています。
  • VBAの条件付き書式を使って、「フォーカスのあるフィールドに」という条件をどのように付けるかを質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

テキストボックスコントロールに「フォーカスのあるフィールド」条件付き書式を "V... http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12103886087 上記質問で解決された内容を流用してみると Dim ctl As Control For Each ctl In Forms(myFormName).Controls   With ctl     If .ControlType = acTextBox Or .ControlType = acComboBox Then       With .FormatConditions         .Delete         With .Add(acFieldHasFocus)           .BackColor = RGB(10, 10, 255)         End With       End With     End If   End With Next ctl ってな感じになると思います。 ※ myFormName が設定されていないので、どういう動きになるかは? ※ そのフォーム内で記述するのであれば For Each ctl In Me.Controls で良さそうに思います。 ※ 不都合あれば、修正してください(未検証)

sqxvxregjigx
質問者

お礼

ご回答ありがとうございます。

その他の回答 (1)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

【要旨】 Addメソッドの引数に、「acFieldHasFocus」を指定すればOKです。 【詳細】 > vbaで「フォーカスのあるフィールドに」と言う条件の付け方が > わからないので教えてください。 関数やメソッドで、ある決められた引数から選択するものの場合、 VBAの「インテリセンス」を利用するのが便利です。 ただ、このインテリセンスを有効に利用するには、対象オブジェクトの 「データ型を指定した変数」への格納が必要な場合があります。 (例えばご提示のコードのように、「Controls」を経由した場合は、  全てのコントロールが「FormatConditions」プロパティを持っては  いないため、その配下のメソッドなどについてはインテリセンスが  働かなくなります) Sub Sample()   '「Field」はDAOのメンバにあるため使用しない方が無難   Dim sField As String   Dim myFormName As String   'FormatConditionsを格納する変数を宣言   Dim Obj As FormatConditions   With Forms(myFormName).Controls(Field)     'FormatConditionsを変数に格納     Set Obj = .FormatConditions     With Obj       .Delete       'データ型を明示した変数を経由しているため、以下の       'コードを手打ちした場合、「With .Add(」まで入力すると       'インテリセンスが候補を表示してくれます       '(「With .Add()」と入力してから「)」の前に戻った場合は       ' 働かないため、「(」を削除して再入力するか、「()」の       ' 間をマウスの右クリックして「入力候補」を選択)       With .Add(acExpression, , "[" & Field & "]=""あ""")         .BackColor = 225       End With     End With   End With   'オブジェクトを格納した変数は、念のため、明示的に変数を解放   Set Obj = Nothing End Sub

sqxvxregjigx
質問者

お礼

ご回答ありがとうございます。

関連するQ&A