从范围创build一个行数组(error handling)

我有一个包含文件名的几列dynamic表。
有时碰巧我只有一行,但我仍然想运行即将到来的function。

值是这样分配的:

arrFileNames = Range("Links[PDF_File]").Value 

我在这行收到一个运行时错误13:

 ReDim arrFilesExistence(1 To UBound(arrFileNames)) 

发生这种情况是因为该数组现在只有一行范围,因此将其保存为string。

我试图通过尝试重新规避,但它似乎并没有工作:

 If Range("Links[PDF_File]").Count = 1 Then arrFileNames = Array(arrFileNames) ReDim Preserve arrFileNames(1 To 1) End If 

我似乎无法find办法。 解决方法让数组成为UBound = 0数组。

任何有工作解决scheme的人?

如果范围只包含一个单元格,则此范围的值不是数组。 因此,使用IsArray()函数,我们可以检查一个范围的值是否为数组,并使用ReDim在我们的arrFileNames创build空间。 它有一行一列 ,最后我们赋值给它。 HTH

 Dim data As Variant Dim arrFileNames As Variant data = Range("YourRangeName").value If Not IsArray(data) Then ' data consists of one cell only ReDim arrFileNames(1 To 1, 1 To 1) arrFileNames(1, 1) = data Else arrFileNames = data End If 

您可以使用on error resume next

 On Error Resume Next arrFileNames = Range("Links[PDF_File]").Value ReDim arrFilesExistence(1 To UBound(arrFileNames)) If Err.Number <> 0 Then ReDim arrFilesExistence(1 To 1) End If