If 循环选择要在文本框中填充的值

If loop to choose which value to populate in textbox

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

假设在 form1 中我有 Textbox1RollFromInventoryTextbox2RollFromMachine1Texbox3RollFromMachine2 等等,假设还有 4 台其他机器,所以还有 4 个其他文本框。

当我想在 Form2 中填充文本框 Job 时,我想编写一个 If 循环,它应该查找其中填充了值的文本框,在 form1(在 form1 中的所有可用文本框中只有一个文本框具有值),即 RollFromInventory 将具有一个值或 RollFromMachine1 将具有一个值或 RollFromMachine2..

我不确定循环逻辑,所以我真的不知道该怎么做。

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

最简单的方法可能是在 Form2 中的 Job 文本框的 Control Source 中使用类似于以下:

=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]
)

不过,这并不是特别漂亮,而且界面设计很糟糕 - 听起来一组单选按钮和一个文本框更适合这种情况。

如果您想在 VBA 中实现它,您可以使用一组嵌套的 If 语句或 Nz 表达式,例如:

Forms![PrinterWaxLabel].JOB = Nz(Nz(InvPW, FHPW), WxPW)

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

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