- ベストアンサー
VBAで「フォーカスのあるフィールドに色を付ける」条件を付ける方法
- 質問者は、帳票フォームの全てのコントロールに条件付き書式を適用し、「フォーカスのあるフィールドに色を付ける」方法をVBAで実現したいとしています。
- 質問者は、コントロールが多いためVBAでループさせたいがコードが分からないと述べています。
- VBAの条件付き書式を使って、「フォーカスのあるフィールドに」という条件をどのように付けるかを質問しています。
- みんなの回答 (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 で良さそうに思います。 ※ 不都合あれば、修正してください(未検証)
その他の回答 (1)
- DexMachina
- ベストアンサー率73% (1287/1744)
【要旨】 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
お礼
ご回答ありがとうございます。
お礼
ご回答ありがとうございます。