よくあると思います...
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 と組み込み条件の両方に欠陥があるように見えるのは、バグのようです。それとも、目の前の何かが欠けている..