如果循环选择文本框中要填充的值

时间:2019-05-27 15:42:53

标签: vba ms-access access-vba ms-access-forms

我在Job中有一个文本框Form2,在Form1中有多个文本框。

form1中,我有Textbox1,即RollFromInventoryTextbox2RollFromMachine1Texbox3RollFromMachine2,依此类推,假设还有其他四台计算机,那么还有四个文本框。

当我想在Job中填充文本框Form2时,我想编写一个If循环,该循环应在{{1 }}(在form1中所有可用文本框中只有一个文本框将具有值),即form1将具有值或RollFromInventory将具有值或{ {1}} ..

我不确定循环逻辑,所以我真的无法弄清楚该怎么做。

目前,我编写的代码主要用于填充级联值(我不提供该代码,因为这会使目标看起来很复杂)。

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是使用类似于以下内容的Switch语句在Job的{​​{1}}文本框中填充控制源

Form2

尽管这不是特别漂亮,而且界面设计也很差,听起来像是一组单选按钮和一个文本框更适合这种情况。

如果要在VBA中实现此功能,则可以使用一组嵌套的=Switch( [Forms]![Form1]![RollFromInventory] is not null, [Forms]![Form1]![RollFromInventory], [Forms]![Form1]![RollFromMachine1] is not null, [Forms]![Form1]![RollFromMachine1], [Forms]![Form1]![RollFromMachine2] is not null, [Forms]![Form1]![RollFromMachine2], [Forms]![Form1]![RollFromMachine3] is not null, [Forms]![Form1]![RollFromMachine3] ) 语句或If表达式,例如:

Nz

答案 1 :(得分:0)

我写了一个代码来实现自己想要的:

If Len(Me.InvPW.Value & "") > 0 Then
Forms![PrinterWaxLabel].JOB = Me.InvPW.Value

Me.JOB.SetFocus

Else

If Len(Me.FHPW & "") > 0 Then

Forms![PrinterWaxLabel].JOB = Me.FHPW.Value

Me.JOB.SetFocus

Else

If Len(Me.WxPW.Value & "") > 0 Then

Forms![PrinterWaxLabel].JOB = Me.WxPW.Value

Me.JOB.SetFocus

End If

End If

End If