2

よくあると思います...

Access の条件付き書式設定で、すべての空白フィールドを書式設定する方法があるかどうか知りたいです。私の場合、通常はすべてのフィールドに入力する必要がありますが、すべての場合ではありません。したがって、ユーザーがそこに書き込むことを制限する条件付きコードを大量に記述する代わりに、「ねえ、ここには何もありません..それはあなたが望んでいたものですか?」というリマインダーとして、フィールドに赤い背景が必要です。

タブレットなので、メッセージボックスが煩わしいです。だから条件付き書式です。「Is Null([Field])」を使用できることはわかっていますが、それには、30 以上のフィールドで 20 以上のフォームを調べ、適切なフィールド名などを確認してから、それらの条件を個別に入力する必要があります。簡単にできる方法はありますか?フィールドを複数選択し、Multiple で条件付き書式を設定し、"Is Equal To: NULL" を使用しますか?

"equal to: Null" を試しましたが、機能しません.. "equal to: "" も機能しません」 (Access 定数を使用) アイデアの理由? または、これを回避する方法を教えてください。また、これは触れられていないフィールドにのみ必要なので、ユーザーが入力を開始してから削除して空白に戻しても、気にしません。フォーマットされていないままになるか、赤に戻る可能性があるため、これを行うためのより良い方法があれば、私はすべて目です.

編集:すべてのフォームに貼り付けるVBAコードをいくつか作成し始めました:

Private Sub Form_Load()
Dim ctl As Control
Dim reqCol As Long
Dim focusCol As Long
Dim doneCol As Long
Dim format As FormatCondition

reqCol = RGB(246, 180, 180)
focusCol = RGB(252, 249, 238)
doneCol = RGB(255, 255, 255)

For Each ctl In Me.Controls
    With ctl
        Me.Controls(ctl.Name).FormatConditions.Delete 'Delete the existing conditions.
        Me.Controls(ctl.Name).BackColor = doneCol 'Set the background color to the done color.

        Select Case .ControlType
            Case acTextBox
                'Create the format objects.
                format = Me.Controls(ctl.Name).FormatConditions.Add(acFieldValue, acEqual, "")
                format = Me.Controls(ctl.Name).FormatConditions.Add(acFieldHasFocus)

                'Format the filled in boxes (ie set back to red)
                With Me.Controls(ctl.Name).FormatConditions(0)
                    .BackColor = reqCol
                    .Enabled = True
                End With

                'Format the current field color (ie set to beige)
                With Me.Controls(ctl.Name).FormatConditions(1)
                    .BackColor = focusCol
                    .Enabled = True
                End With
        End Select
    End With
Next ctl
End Sub

問題はFormatConditions.Add(acFieldValue, acEqual, "")、同じ理由で機能しないことです...どうすればこれを回避できますか? VBA と組み込み条件の両方に欠陥があるように見えるのは、バグのようです。それとも、目の前の何かが欠けている..

4

3 に答える 3

2

長さゼロのデータを表示する方法にデフォルトのフォーマットを設定します。使用する

Field Value Is greater than ''

条件付き書式を設定し、その書式をフィールド内のテキストでどのように表示するかを設定します。

条件付き書式のスクリーンショット

これを適用する必要があるすべての適切なフィールドを選択するには、デザイン ビューで Shift キーを押しながらクリックして複数のフィールドを選択できます。

于 2012-05-22T19:17:48.793 に答える
0

解決しました。これを私のフォームに入れます(モジュールにすることを検討するかもしれません;これは初めてで、まだ方法はわかりません)

Private Sub Form_Load()
On Error Resume Next

Dim ctl As Control
Dim reqCol As Long
Dim focusCol As Long
Dim doneCol As Long
Dim format As FormatCondition
Dim expr As String

reqCol = RGB(246, 180, 180)
focusCol = RGB(252, 249, 238)
doneCol = RGB(255, 255, 255)

For Each ctl In Me.Controls
    With ctl
        'Delete the existing formatting
        Me.Controls(ctl.Name).FormatConditions.Delete
        Me.Controls(ctl.Name).BackColor = doneCol

        Select Case .ControlType
            Case acTextBox
                expr = "IsNull(" & ctl.Name & ") = True"
                'Create the format objects.
                format = Me.Controls(ctl.Name).FormatConditions.Add(acFieldHasFocus)
                format = Me.Controls(ctl.Name).FormatConditions.Add(acExpression, , expr)

                'Format the filled in boxes (ie set back to focus color)
                With Me.Controls(ctl.Name).FormatConditions(0)
                    .BackColor = focusCol
                    .Enabled = True
                End With

                'Format the current field color (ie set to required color)
                With Me.Controls(ctl.Name).FormatConditions(1)
                    .BackColor = reqCol
                    .Enabled = True
                End With
        End Select
    End With
Next ctl
End Sub

への入り方がコツでしたFormatConditions.Add(...)。私が今したいように正確に動作します。

于 2012-05-23T12:18:34.640 に答える