Vba 以连续形式突出显示字段背景

Vba 以连续形式突出显示字段背景,vba,ms-access,Vba,Ms Access,我有一个访问连续表单。我想更改特定记录字段的前景色 我有要从FieldModified字段突出显示的字段。例如FieldModified=Converted。已转换为我表单上的字段 我想更改转换字段的颜色,并对表单中的每条记录执行此操作 我原以为这段代码行得通,但我犯了一个错误。[FieldModified]。ForeColor。我需要对表单中的每个记录执行此操作 代码: 更新了代码,但它给了我一个错误438,表示对象不支持此属性或方法。但是表单确实会突出显示表单上的字段,但它突出显示的字段多于

我有一个访问连续表单。我想更改特定记录字段的前景色

我有要从FieldModified字段突出显示的字段。例如FieldModified=Converted。已转换为我表单上的字段

我想更改转换字段的颜色,并对表单中的每条记录执行此操作

我原以为这段代码行得通,但我犯了一个错误。[FieldModified]。ForeColor。我需要对表单中的每个记录执行此操作

代码:

更新了代码,但它给了我一个错误438,表示对象不支持此属性或方法。但是表单确实会突出显示表单上的字段,但它突出显示的字段多于一个字段fldName

Private Sub Form_Load()
Dim rstForm As String
Dim fldName As String
Set rstForm = Me.ChangedData.Form.Recordset

Do While Not rstForm.EOF
fldName = Me.FieldModified.value    
If (Not IsNull(fldName)) Then
    Me.Controls(fldName).ForeColor = vbRed '<--doesn't recognize fldName value
End If

rstForm.MoveNext
Loop
End Sub
不能像这样使用字符串变量,fldName是一个保存字符串值的标识符。。不是标识符-在Me.ControlName中,Me和ControlName都是标识符

但并不是所有的希望都破灭了!可以使用字符串从窗体中提取控件对象

所有表单控件都应存在于表单的控件集合中,并按名称键入:

Me.Controls(fldName).ForeColor = vbRed

您可以为控件设置默认格式。连续表单中控件的每个副本都使用此格式。要按条件fldName=Me.FieldModified.value设置格式,您需要安德烈告诉您的条件格式,或者使用细节部分绘制事件,请参见底部的更新

在条件格式向导中,您可以使用表达式Isand[Converted].Name=[FieldModified]为应高亮显示的窗体的每个控件创建条件(如果其名称与FiledModified匹配)。在Ms Access表达式中,您不能使用我,请忽略它

可以使用VBA按代码格式化所有控件。如果要修改现有条件,请使用.modify而不是.Add

专用子窗体加载 Dim ctl作为访问控制 对于Me.Controls中的每个ctl,通过窗体的所有控件循环 错误时,继续下一步“并非所有控件都可以使用条件格式,例如标签。为了保存控件类型的检查,我们在这里忽略错误 ctl.FormatConditions.AddacExpression,ctl.Name&.Name=[FieldModified].BackColor=vbRed“如果可能,请将o格式条件添加到控件,否则将引发错误,但将忽略该错误 如果出现错误编号,则“显示错误” Debug.Print错误:&Err.Number&-&Err.description&在控件中:&ctl.Name&Type为&TypeNamectl 错误。清除“重置错误”以捕获下一个错误 其他的 添加到控件的Debug.Print FormatCondition:&ctl.Name和Type为&TypeNamectl 如果结束 下一个ctl 在错误转到0'时再次启用错误,可能会在错误转到MyerHandler时添加错误处理程序 端接头 更新: 您可以使用窗体的Details\u Paintevent对同一控件的格式设置为每个记录不同的格式。这将为没有格式条件属性(如标签、按钮)的控件启用条件格式

专用子详图 Dim c作为访问控制 对于Me.Detail.Controls中的每个c 如果c.Name=Me.FieldModified.Value,则 c、 前景色=vbRed 其他的 c、 前景色=黑色 如果结束 下一个 端接头
在代码中,fldName被定义为一个字符串,它没有.ForeColor属性。也许你只需要改变我。[fldName].ForeColor=vbRed给我。ControlfldName.ForeColor=vbRed谢谢。如何对连续表单中的每条记录执行此操作?您不能设置字符串,rstForm应声明为记录集。我已将Dim语句更改为Dim rstForm作为记录集,但我仍然无法找到方法或数据成员。实现此操作的唯一方法是使用条件格式,请参见,或者您太棒了!但是我该如何对连续表单中的每个记录执行此操作呢?哦,我不知道-我从不使用Access,所以Access表单对我来说有点陌生。问题中没有任何代码提示我任何给定控件的实例都不止一个,所以。。。我会试着找一个访问专家。我试着使用了你的两个代码,但对我来说都不起作用。我想这是因为我在比较这些领域name@MaxineHammett抱歉,我忘记更改字段1的字段已修改。代码已更新。
Me.Controls(fldName).ForeColor = vbRed