【问题标题】:MS Access - Formatting LabelsMS Access - 格式化标签
【发布时间】:2017-03-03 23:32:59
【问题描述】:

我正在使用 MS Access 2010 中的表单将数据输入到表中。我已经设置了基本功能并添加了一些 VB 代码以根据需要对其进行格式化。我要做的一件事是在选择该复选框时更新该复选框值的标签 - 使用下面的代码它可以工作,但是当我单击“添加记录”时,标签上的格式仍然存在,而不是像数据一样清除项目 - 我不知道如何修改它以使其工作,我确信我将不得不添加一个循环或修改添加记录按钮,但我不知道从哪里开始(有 30 多个标签和复选框所以如果有一种无需参考所有首选标签的快速方法)。我的第二个问题是因为我使用了“更新后”,当我使用表单查看已添加的记录时,格式不会随着值的变化而改变,因为没有单击复选框。

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

任何帮助或指导将不胜感激。

【问题讨论】:

  • 您使用的是连续表格吗?检查控件类型可以做很多事情。考虑一下,你已经有了真假,所以你可能不需要 if 和 else。
  • 您的第二个问题很简单 - 只需添加一个“Form_Current”事件即可根据需要设置/重置标签。至于单击“添加”按钮后的“重置 30 多个标签...”,您可以循环遍历所有 Me.Controls 以查找复选框类型并重置,或者手动重置 20 多行代码(嘘!)这是一个识别有意义的控件名称(即 chkLarge、chkSmall 等)的价值的好地方,因为您可以使用代码来查找名称和控件类型。

标签: vb.net ms-access formatting vba


【解决方案1】:

您必须在 3 个不同的场合对 TextBox1Name 进行格式化。更新记录时(如您所见),更改表单上的记录时(即OnCurrent 事件)或添加新记录时(即新记录按钮上的OnClick 事件。

我这样做的方式是创建一个私有子代码,其代码与您上面的代码非常相似,然后从所有 3 个事件中调用 if。唯一真正需要的改变是:

If Nz(TextBox1Name,0) = -1 Then

如果您的 TextBox1Name 的默认值为 Null 而不是其他值。

这当然适用于非连续形式。对于连续形式,事情有点棘手。在这种情况下,您最好的选择是条件格式。事实上,您甚至可以对单个表单使用条件格式,而不是使用 VBA。

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多