2014-06-05 151 views
0

所以我想要做的是將一堆變量傳遞給If ... then語句。如果變量返回true,那麼它將得到代碼的另一部分使用的「」。如果它返回false,則會在消息框中打印一個不同的值。如何從MsgBox中刪除變量

這是問題所在。有多個變量,當每個變量都在消息框中打印時,它們之間用行分隔。如果一個變量,比如說C,返回true,那麼它將只是一個空白的消息框,剩下的就是一些東西。基本上,我試圖刪除變量,並將其放入消息框中。我怎麼能這樣做呢?

Set cellD = Selection.Find(What:="7/27/2013") 
If cellD Is Nothing Then 
    D = "7/27/2013, " 
Else: 
    D = "" 
End If 

If A = "" And B = "" And C = "" And D = "" Then 
    MsgBox (Pass) 

Else: 
    If A = "" Then Set A = Nothing 
    MsgBox ("Missing:" & vbNewLine & A & vbNewLine & B & vbNewLine & C & vbNewLine & D) 
+1

這是什麼'A'? - 你測試它就像是一個字符串,但然後將它設置爲Nothing,就像它是一個對象...很難遵循你的代碼 - 可能會添加更多的行,所以你的意圖更清晰。 –

回答

1

這裏有一種方法:

Sub test() 

Dim output As String 

Dim A As String 
Dim B As String 
Dim C As String 
Dim D As String 

If A <> "" Then output = A 

If B <> "" Then 
    If output = "" Then 
     output = B 
    Else 
     output = output & vbNewLine & B 
    End If 
End If 

If C <> "" Then 
    If output = "" Then 
     output = C 
    Else 
     output = output & vbNewLine & C 
    End If 
End If 

If D <> "" Then 
    If output = "" Then 
     output = D 
    Else 
     output = output & vbNewLine & D 
    End If 
End If 

If output <> "" Then 
    MsgBox ("Missing: " & output) 
Else 
    MsgBox ("Pass") 
End If 

End Sub 

還有其他的方法,但我認爲這是一個很好的地方給你開始(使你的VBA技術水平的假設)。我認爲A,B和C都是字符串,但是您應該根據自己的情況對這些字符進行調暗。

希望能讓你接近!

+0

謝謝!這非常有幫助! – Drew

+1

@ user3485595太棒了,很高興我能幫到你。如果它解決了您的問題,那麼通常會接受和/或接受解決方案。這讓有相似問題的人知道答案是有幫助的。 – sous2817