Если цикл, чтобы выбрать, какое значение для заполнения в текстовом поле - PullRequest
0 голосов
/ 27 мая 2019

У меня есть текстовое поле Job в Form2, и у меня есть несколько текстовых полей в Form1.

Допустим, в form1 у меня есть Textbox1, который RollFromInventory, Textbox2 равен RollFromMachine1, Texbox3 равен RollFromMachine2 и так далее, предположим, что есть еще 4 машины, поэтому четыре других текстовых поля ,

Когда я хочу заполнить текстовое поле Job в Form2, я хочу написать цикл If, который должен искать текстовое поле со значением, заполненным в нем, в form1 (будет только один текстовое поле, которое будет иметь значение среди всех доступных текстовых полей в form1), т.е. либо RollFromInventory будет иметь значение, либо RollFromMachine1 будет иметь значение, либо RollFromMachine2 ..

Я не уверен в логике зацикливания, поэтому не могу понять, как это сделать.

В настоящее время код, который я написал, в основном предназначен для заполнения сцепленных значений (я не предоставляю этот код, потому что это сделает задачу сложной).

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я написал код для достижения того, что хотел:

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
0 голосов
/ 27 мая 2019

Самым простым подходом может быть заполнение элемента управления вашего Job текстового поля в Form2 с помощью оператора Switch, подобного следующему:

=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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...