2015-06-17 3 views
1

Я пытаюсь открыть окно, в котором перечислены некоторые значения, которые могут быть пустыми.Msgbox With If statement

MsgBox (res1 & vbNewLine & _ 
res2 & vbNewLine & _ 
res3 & vbNewLine & _ 
res4 & vbNewLine & _ 
res5 & vbNewLine & _ 
res6 & vbNewLine & _ 
res7 & vbNewLine & _ 
res8 & vbNewLine & _ 
res9 & vbNewLine & _ 
res10 & vbNewLine & _ 
res11 & vbNewLine & _ 
res12 & vbNewLine) 

, что я хочу сделать, это что-то вроде этого:

if res1 <> "" then 
    res1 & vbNewLine 
else 
    "" 
end if 

Потому, что показывает на данный момент нагрузка пустых строк:

http://i.stack.imgur.com/M4PZf.png

ответ

0

Вы могли бы объявить Строка и постройте строку для отображения символов. Нечто подобное,

Dim tmpRes As String 

If Len(res1) > 0 Then _ 
    tmpRes = tmpRes & res1 & vbCrLf 

If Len(res2) > 0 Then _ 
    tmpRes = tmpRes & res2 & vbCrLf 

If Len(res3) > 0 Then _ 
    tmpRes = tmpRes & res3 & vbCrLf 

If Len(res4) > 0 Then _ 
    tmpRes = tmpRes & res4 & vbCrLf 

If Len(res5) > 0 Then _ 
    tmpRes = tmpRes & res5 & vbCrLf 

If Len(res6) > 0 Then _ 
    tmpRes = tmpRes & res6 & vbCrLf 

If Len(res7) > 0 Then _ 
    tmpRes = tmpRes & res7 & vbCrLf 

If Len(res8) > 0 Then _ 
    tmpRes = tmpRes & res8 & vbCrLf 

If Len(res9) > 0 Then _ 
    tmpRes = tmpRes & res9 & vbCrLf 

If Len(res10) > 0 Then _ 
    tmpRes = tmpRes & res10 & vbCrLf 

MsgBox tmpRes 
+4

о, дорогой бог, это ужасно – Vogel612

1

Если вы не хотите, чтобы сделать строку внешнего вызова в функции MsgBox можно использовать встроенный, если:

MsgBox (res1 & Iif(res1<>"", vbNewLine, "") & _ 
res2 & Iif(res2<>"", vbNewLine, "") & _ 
res3 & Iif(res3<>"", vbNewLine, "") & _ 
res4 & Iif(res4<>"", vbNewLine, "") & _ 
res5 & Iif(res5<>"", vbNewLine, "") & _ 
res6 & Iif(res6<>"", vbNewLine, "") & _ 
res7 & Iif(res7<>"", vbNewLine, "") & _ 
res8 & Iif(res8<>"", vbNewLine, "") & _ 
res9 & Iif(res9<>"", vbNewLine, "") & _ 
res10 & Iif(res10<>"", vbNewLine, "") & _ 
res11 & Iif(res11<>"", vbNewLine, "") & _ 
res12 & Iif(res12<>"", vbNewLine, "")) 
3

Хорошее горе каждый делает это труднее, чем она должна be ...

Сохраните все свои строковые переменные в массиве, а затем создайте функцию BuildMessage, которая принимает в массиве, а затем перебирает ее, возвращая окончательное сообщение.

Public Sub Test() 

    Const res1 As String = vbNullString 
    Const res2 As String = "Hello" 
    Const res3 As String = vbNullString 
    Const res4 As String = "GoodBye" 
    Const res5 As String = vbNullString 

    Dim resArr As Variant 
    resArr = Array(res1, res2, res3, res4, res5) 

    Dim msg As String 
    msg = BuildMessage(resArr) 

    MsgBox msg 

End Sub 

Private Function BuildMessage(ByVal arr As Variant) As String 

    Dim msg As String 

    Dim i As Long 
    For i = LBound(arr) To UBound(arr) 
     Dim str As String 
     str = arr(i) 

     If str <> vbNullString Then 
      msg = msg & str & vbNewLine 
     End If 
    Next 

    BuildMessage = msg 

End Function