If 循环选择要在文本框中填充的值
If loop to choose which value to populate in textbox
我在 Form2
中有一个文本框 Job
,我在 Form1
中有多个文本框。
假设在 form1
中我有 Textbox1
即 RollFromInventory
,Textbox2
是 RollFromMachine1
,Texbox3
是 RollFromMachine2
等等,假设还有 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
我在 Form2
中有一个文本框 Job
,我在 Form1
中有多个文本框。
假设在 form1
中我有 Textbox1
即 RollFromInventory
,Textbox2
是 RollFromMachine1
,Texbox3
是 RollFromMachine2
等等,假设还有 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