下面的代码是我写的一个宏的片段,用于警告用户他们可能没有足够数量的兼容安装设备.n个缺陷(即,没有兼容安装设备的设备项目的每个实例都保存在元素1到n的yankees()数组中.我想要做的是提示用户输入一个消息框,说明"请检查您的订单以确保你有足够的兼容安装设备 - 我们检测到以下不足之处"
在那之下
在消息框中的单独行中包括yankees(1到n)的所有元素,下面有两个选项"这没关系,我现在将提交订单"和"让我回去,我想修改我的订单".
我该如何创建这样的消息框?
我有:
MsgBox "Please review your order to ensure you have you sufficient compatible installation equipment- we detected the following concerns" & yankee(1), vbOKCancel
Run Code Online (Sandbox Code Playgroud)
目前但这只包括第一次缺口.如何包含yankee()的所有元素并将它们放在自己的行上?
这个问题实际上归结为:"如何在消息框提示符中将数组变量的所有非空元素放在自己的行上"?
Do
If rip(qbert) < k(qbert) Then
yankee(jets) = "Your order for" & s(qbert) & " contains " & k(qbert) - rip(qbert) & " too few " & g(qbert)
jets = jets + 1
qbert = qbert + 1
Else
qbert = qbert + 1
End If
Loop Until qbert > echo
Run Code Online (Sandbox Code Playgroud)
你可以使用这个Join功能:
Sub Test()
Dim var As Variant
'Populate a dummy vector array from a comma-separated list:
var = Split("Alpha,Beta,Gamma,Delta,Epsilon", ",")
'Display the contents of the array as delimited list, use the Carriage Return to delimit:
MsgBox Join(var, vbCR)
End Sub
Run Code Online (Sandbox Code Playgroud)

以上并不忽视空白.要忽略空白,根据您的具体问题,您可以迭代数组并测试空值.我会这样做Function:
如何在消息框提示中将数组变量的所有非空元素放在各自的行上
在你的sub中,只需传递yankees给这个函数,如:
MsgBox = GetMessageText(yankees)
Run Code Online (Sandbox Code Playgroud)
这是功能:
Function GetMessageText(var As Variant) As String
'Assumes a vector array
On Error GoTo EarlyExit
Dim sMsg As String
Dim v As Variant
For Each v In var
If Not v = vbNullString Then
sMsg = sMsg & v & vbCr
End If
Next
EarlyExit:
If Err.Number = 0 Then
GetMessageText = sMsg
Else:
GetMessageText = "invalid array"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |