Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 用于更新多表单文本框的伪弹出文本框_Ms Access_Vba - Fatal编程技术网

Ms access 用于更新多表单文本框的伪弹出文本框

Ms access 用于更新多表单文本框的伪弹出文本框,ms-access,vba,Ms Access,Vba,我有一个表单,其中包含一个带有多个文本框的检查表,txtObs1、txtObs2、txtObs3等。每个文本框上的单击事件将弹出(实际上是一个隐藏的文本框,使其可见)txtAddData。我可以在txtAddData中输入数据,并使用afterupdate事件更新文本框,但我希望使用相同的txtAddData逐个更新表单上的其余文本框 Private Sub txtAddData_AfterUpdate() Me.txtObs1 = Me.txtAddData Me.txtObs1.SetFoc

我有一个表单,其中包含一个带有多个文本框的检查表,txtObs1、txtObs2、txtObs3等。每个文本框上的单击事件将弹出(实际上是一个隐藏的文本框,使其可见)txtAddData。我可以在txtAddData中输入数据,并使用afterupdate事件更新文本框,但我希望使用相同的txtAddData逐个更新表单上的其余文本框

Private Sub txtAddData_AfterUpdate()
Me.txtObs1 = Me.txtAddData
Me.txtObs1.SetFocus
Me.txtAddData = ""
Me.txtAddData.Visible = False
End Sub

Private Sub txtObs1_Click()
txtAddData.Visible = True
txtAddData.SetFocus
If Not IsNull(Me.txtObs1) Then
Me.txtAddData = Me.txtObs1
Else
Me.txtAddData = ""
End If
End Sub

设置一个变量以保存文本框的名称:

Option Compare Database
Option Explicit

Private CurrentTextbox As String


Private Sub txtAddData_AfterUpdate()

    Me.Controls(CurrentTextbox).Value = Me.txtAddData
    Me.Controls(CurrentTextbox).SetFocus
    Me.txtAddData = Null
    Me.txtAddData.Visible = False

End Sub


Private Sub txtObs1_Click()

    CurrentTextbox = "txtObs1"
    SetData

End Sub


Private Sub txtObs2_Click()

    CurrentTextbox = "txtObs2"
    SetData

End Sub


Private Sub SetData

    txtAddData.Visible = True
    txtAddData.SetFocus
    If Not IsNull(Me.Controls(CurrentTextbox).Value) Then
        Me.txtAddData = Me.Controls(CurrentTextbox).Value
    Else
        Me.txtAddData = Null
    End If

End Sub

设置一个变量以保存文本框的名称:

Option Compare Database
Option Explicit

Private CurrentTextbox As String


Private Sub txtAddData_AfterUpdate()

    Me.Controls(CurrentTextbox).Value = Me.txtAddData
    Me.Controls(CurrentTextbox).SetFocus
    Me.txtAddData = Null
    Me.txtAddData.Visible = False

End Sub


Private Sub txtObs1_Click()

    CurrentTextbox = "txtObs1"
    SetData

End Sub


Private Sub txtObs2_Click()

    CurrentTextbox = "txtObs2"
    SetData

End Sub


Private Sub SetData

    txtAddData.Visible = True
    txtAddData.SetFocus
    If Not IsNull(Me.Controls(CurrentTextbox).Value) Then
        Me.txtAddData = Me.Controls(CurrentTextbox).Value
    Else
        Me.txtAddData = Null
    End If

End Sub

第行的运行时错误438如果不为null(Me.Controls(CurrentTextbox).Value),则引用的控件不是文本框。标签?它是一个名为txtObs1的未绑定文本框,与所有其他文本框一起放置在子窗体上。另外,我不能使用Private CurrentTextbox作为字符串,Private给了我错误。这可能是导致错误的原因,因为字符串进入声明部分。请看编辑后的答案。这就是问题所在,现在一切都很好。感谢您联机出现运行时间错误438如果不为null(Me.Controls(CurrentTextbox).Value),则引用的控件不是文本框。标签?它是一个名为txtObs1的未绑定文本框,与所有其他文本框一起放置在子窗体上。另外,我不能使用Private CurrentTextbox作为字符串,Private给了我错误。这可能是导致错误的原因,因为字符串进入声明部分。请看编辑后的答案。这就是问题所在,现在一切都很好。非常感谢。