我正在使用MS Access 2010中的表单将数据输入到表中。我已经设置了基本的函数,并添加了一些VB代码来根据需要格式化它。我正在尝试做的一件事是当一个勾选框被选中时更新该勾选框值的标签-使用下面的代码,但是当我单击“添加记录”时,标签上的格式保持不变,而不是像数据项一样清除-我不知道如何修改它以使其工作,我确信我将不得不添加一个循环或修改添加记录按钮,但我不知道从哪里开始(有30+标签和勾选框,所以如果有一个快速的方法,而不必引用所有的标签将是首选的)。我的第二个问题是因为我使用了'AfterUpdate',当我使用表单查看已经添加的记录时,格式不会随着值的变化而改变,因为没有点击任何勾选框。
Private Sub TextBox1Name_AfterUpdate()
Const LightYellow = 10092543
If TextBox1Name = -1 Then
Me.Label1Name.BackStyle = 1
Me.Label1Name.BackColor = LightYellow
Else
Me.Label1Name.BackStyle = 0
End If
End Sub任何帮助或指导都将非常感谢。
发布于 2017-03-03 23:33:00
您必须在3种不同的情况下对TextBox1Name进行格式化。当更新记录时(就像您所做的那样)、当表单上的记录发生更改时(即OnCurrent事件)或当您添加新记录(即new record按钮上的OnClick事件)时。
我会这样做的方式是创建一个私有sub的代码非常类似于你有上面的,然后调用if从所有3个事件。唯一真正需要改变的是:
If Nz(TextBox1Name,0) = -1 Then如果您的TextBox1Name的默认值为Null,而不是其他值。
这当然适用于非连续形式。对于一个连续的形式,事情有点棘手。在这种情况下,您最好的选择是条件格式。实际上,您甚至可以对单个表单使用条件格式,而不是使用VBA。
https://stackoverflow.com/questions/42581078
复制相似问题