アプリ版:「スタンプのみでお礼する」機能のリリースについて

帳票フォームの全てのコントロールに
条件付き書式で
「フォーカスのあるフィールドに色を付ける」を行いたいのですが
コントロールが多すぎる為VBAでループさせたいのですがコードがわかりません。

http://www.tsware.jp/tips/tips_187.htm

これをVBAで行いたいです。

VBAでの条件付き書式は

Sub Sample()
Dim Field As String
Dim myFormName As String

With Forms(myFormName).Controls(Field)
With .FormatConditions
.Delete
With .Add(acExpression, , "[" & Field & "]=""あ""")
.BackColor = 225
End With
End With
End With
End Sub
こんな感じで出来る事は知ってますが、
vbaで「フォーカスのあるフィールドに」と言う条件の付け方がわからないので教えてください。

A 回答 (2件)

テキストボックスコントロールに「フォーカスのあるフィールド」条件付き書式を "V...


http://detail.chiebukuro.yahoo.co.jp/qa/question …

上記質問で解決された内容を流用してみると

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

で良さそうに思います。


※ 不都合あれば、修正してください(未検証)
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/14 19:18

【要旨】


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/14 19:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!