首页 > 解决方案 > MS ACCESS VBA - 一次更改表单文本框的所有属性值的最佳方法

问题描述

我有一个带有 3 个文本框的表单,我想根据某些事件更改它们的属性值。我的想法是将这些属性设置为全局表单的变量,以便在我想要的函数或模块中使用它们(这取决于您的建议)。

假设我想通过按下一个按钮来更改所有 textboxs.enabled 属性,并且我想在将来需要时更改另一个不同的属性(如边框颜色),我的示例是:以 VBA 形式,

Option Compare Database
Option Explicit
Private Const AllTxtboxes = *** all txtboxes ***

在 VBA 按钮中

Private Sub button1_Click()
AllTxtboxes.enabled = True
End sub

提前致谢。

标签: vbams-accesstextboxglobal-variables

解决方案


您需要遍历所有控件并确定要更改的控件。问题是每种控件类型都有自己的属性,因此您需要确保您使用的是正确的。

为此,所有控件都有一个共同的属性,名为Tag

在那里,您可以指定一个值并检查它。只选择你想要的真的很有帮助。

我用 6 个文本框制作了一个简单的表单:

在此处输入图像描述

请注意,在设计视图中,右侧的属性面板,选项卡其他,最后一个属性是Tag(有时它以附加信息或类似的形式出现)。

在那里,我输入了 99,但只在文本框 2、4 和 6 上输入,因为这些是我想要处理的文本框(这将是你的文本框数组

我添加了一个命令按钮,以便在单击时将这些文本框的前景色更改为红色。我的代码是:

Private Sub CMD_CHANGE_FONT_COLOR_Click()
Me.Painting = False
Dim MyControl As Control
Dim MyTxt As TextBox


For Each MyControl In Me.Controls
    If MyControl.Tag = 99 Then
        'we set MyTxt to MyControl so we can use Intellisense, not really needed, but it makes coding easier
        Set MyTxt = MyControl
        MyTxt.ForeColor = vbRed
        Set MyTxt = Nothing
    End If
Next MyControl

Me.Painting = True

End Sub

当表单加载时,您将看到:

在此处输入图像描述

但是点击命令按钮后,这 3 个文本框的前景色会变成红色:

在此处输入图像描述

你去吧。因此,每当您想对该数组 textboxes做某事时,您都可以使用此代码循环并更改您想要的属性。


推荐阅读