循环通过8204变量类型(变种数组)

时间:2014-06-26 19:55:06

标签: excel vba excel-vba

我在循环变量数组(8204变量类型)时遇到了一些麻烦。我正在通过输入框(类型8)寻求输入,并希望用户能够ctrl +多个不相交的范围和单元格。我遇到的问题是,当我尝试循环选择这些范围时,它只会拾取第一个。

以下是该问题的一个有效例子:

Sub myarray()
    MyAnswer = Application.InputBox("Pick a description cell(s) in spreadsheet for the link" _
        & vbNewLine & "(Hold Ctrl to select multiple cells)", Type:=8)
    ' if its type 8204
    If VarType(MyAnswer) = 8204 Then
        MsgBox "Length of array:  " & UBound(MyAnswer)
        ' loop through each element in the array
        For Each vvalue In MyAnswer
            MsgBox vvalue
        Next
    End If
End Sub

在提示符下键入以下内容或使用ctrl +:

选择一些范围
$A$12:$A$13,$B$4:$C$4,$D$4

出于某种原因,当我想遍历所有范围/单元格中的所有元素时,我只能获取第一个范围$A$12:$A$13

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

Application.InputBox返回一个范围对象,因为你没有使用set它使用默认属性.value,它只返回第一个区域的值。

Sub myarray()
    Dim MyAnswer as Range
    Set MyAnswer = Application.InputBox("Pick a description cell(s) in spreadsheet for the link" _
        & vbNewLine & "(Hold Ctrl to select multiple cells)", Type:=8)
    ' if its type 8204
    If not MyAnswer is nothing Then
        dim cell as Range
        ' loop through each cell in the range
        For Each cell In MyAnswer
            MsgBox cell.value
        Next
    End If
End Sub