将整个数组作为字符串返回

时间:2014-06-27 22:49:39

标签: arrays vba excel-vba excel

如果公式在作为范围一部分的单元格中生成“X”,则会填充一个数组:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Fault(10) As Boolean

For i = 1 To 10

If Range("A" & i).Value = "X" Then
    Fault(i) = True
End If

Next i


MsgBox Fault    'VBA Errors Here With "Type Mismatch"

End Sub

我的问题是,是否可以将整个数组作为字符串返回。所以在上面的例子中,如果没有错误,我希望消息框返回“0000000000”。如果第7个数组出现故障,则返回“0000001000”。

我的目的是检查字符串是否总是等于“0000000000”才能继续。但是,如果有更好的方法来检查整个数组是否为假,那么这将更加容易。

1 个答案:

答案 0 :(得分:3)

试试这个:

Sub JoinArray()
    Dim Fault(9) As String, arrString As String

    For i = 1 To 10
        If Range("A" & i) = "X" Then
            Fault(i - 1) = 1
        Else
            Fault(i - 1) = 0
        End If
    Next i

    arrString = Join(Fault(), "")

    If InStr(arrString, "1") Then
        MsgBox "Fault Found"
    Else
        MsgBox "No faults found"
    End If
End Sub

注意:

  1. 通常,数组为零索引,因此Fault(9)允许10个插槽,例如范围(" A1:A10&#34)
  2. ""的{​​{1}}参数表示输出中没有空格,即0011000000
  3. 替代方法,不使用数组

    Join