Несколько текстовых полей в одну ячейку. Как, если во 2-м и 3-м текстовых полях нет значений, а затем продолжить код

У меня есть 4 текстовых поля в пользовательской форме. Значение всех 4 переносится в одну ячейку, разделенную разрывом (Char (10)) и префиксом строки «Error1:», но если только первое текстовое поле имеет значение, а остальные пусты, префикс для другого текстового поля появляется на ячейке. Я хотел бы знать, можно ли пропустить пустые текстовые поля, а не передавать их префикс в ячейку.

Я использую оператор If и «&», чтобы добавить все текстовые поля в одну ячейку.

a = Error1Box.Value
b = Error2Box.Value
c = Error3Box.Value
d = Error4Box.Value
If a = "" Then
    'Do Nothing
Else
    Cells(emptyRow, 16).Value = "Error1: " & a & Chr(10) & "Error2: " & b & Chr(10) & "Errro3: " & c & Chr(10) & "Error4: " & d
End If

Я ожидаю: если только Error1Box имеет значение, ячейка будет Error1: описание...

но то, что я получаю, это:

Error1: Description...
Error2:
Error3:
Error4:

поэтому, если остальные текстовые поля пусты, в них ничего не отображается, кроме тех, у которых есть значения.


person Novato    schedule 14.04.2019    source источник
comment
сделать что-то вроде ="Error1: " & a & Chr(10) & IIf(b = "", "", "Error2: " & b & Chr(10)) & IIf(c = "", "", "Error3: " & c & Chr(10)) & IIf(d = "", "", "Error4: " & d) это   -  person Ahmed AU    schedule 14.04.2019


Ответы (1)


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

Dim errString As String
Dim iTb As Long

For iTb = 1 To 4
    With Me.Controls("Error" & iTb & "Box")
        If .Value <> vbNullString Then errString = errString & Chr(10) & "Error" & iTb & ": " & .Value
    End With
Next
If errString <> vbNullString  Then Cells(emptyRow, 16).Value = Mid$(errString, 2)
person DisplayName    schedule 14.04.2019