我会想到的东西会出现很多......
我想知道在Access'条件格式化中是否有办法格式化所有空白字段。在我的情况下,通常需要输入所有字段,但并非在所有情况下。所以,不是写一堆条件代码来限制用户在那里写它,我只是想在我的字段中有一些红色背景作为提示“嘿,这里什么都没有......确定那就是你想要的?” />它在平板电脑上,所以消息框会很烦人。所以条件格式化它。我知道你可以拥有“Is Null([Field])但是这需要我在30多个字段中查看我的20多个表单并确保正确的字段名称等,然后单独为它们键入条件。有没有办法我可以简单地多选我的字段,在Multiple上执行条件格式,并使用“Is Equal To:NULL”?
我试过“等于:Null”并且它不起作用..也不是“等于:”“”(使用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和内置条件都有缺陷,看起来像一个bug。或者我在我面前丢失了一些东西..
答案 0 :(得分:2)
答案 1 :(得分:1)
将默认格式设置为希望显示零长度数据的方式。 使用
Field Value Is
greater than
''
用于条件格式设置,并将该格式设置为字段在文本中的显示方式。
您可以在设计视图中使用Shift +单击选择多个字段,以选择需要应用于此的所有相应字段
答案 2 :(得分: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(...)
。完全符合我现在的喜好。