循环访问访问表单上的文本框并更改数据

use*_*333 2 ms-access vba textbox if-statement

我试图在访问表单打开时更改数据。此刻数据显示为 True,我想将其更改为 Yes。我已经试过了,但我是 vba 新手,我真的不知道我在做什么。我给所有的文本框都加上了“QtTxtBox”的相同标签,希望这会有所帮助,但没有。以下是我到目前为止所得到的,有人可以帮助我吗?

      Dim ctlVar As Control
      For Each ctlVar In Me.Controls
        If ctlVar.ControlType = acTextBox Then
            If acTextBox.text = "True" Then
               acTextBox.text = "yes"
            End If
      End If
Run Code Online (Sandbox Code Playgroud)

Tom*_*ins 5

您的问题出在您的文本框参考中。acTextBox 不是文本框。它只是显示控件类型是文本框的值。
所以,当你说' If ctlVar.ControlType = acTextBox Then '时,这是正确的。
但是当你说' If acTextBox.text = "True" Then '时,那是不正确的。您不再引用控件。它应该是 ' If ctlVar.text = "True" Then '。ctlVar 是您对控件的引用。

此外,您需要在更改值之前将焦点设置在文本框上。您的代码应如下所示:

For Each ctlVar In Me.Controls
  If ctlVar.ControlType = acTextBox Then
      If ctlVar.Value = "True" Then
         ctlVar.Value = "yes"
      End If
End If
Run Code Online (Sandbox Code Playgroud)