将variablesexcel数据读取成相同格式的变体

我目前正在写一个Excel的macros。 首先,我想从我的工作表“filter”中的第20行读取我的variables设置到我的variables“test”中:

' Define Last Column with a value LastCol = Sheets("Filter").Cells(20, Sheets("Filter").Columns.Count).End(xlToLeft).Column Col_Letter = Split(Cells(1, LastCol).Address(True, False), "$")(0) ' Read Data into variable test = Sheets("Filter").Range("B20:" & Col_Letter & "20").Value 

这到目前为止工作得很好,我得到一个像这样的结构变体:

 test test(1) test(1,1) = value1 test(1,2) = value2 test(1,3) = value3 ... 

我现在的问题是:当我只有一个值读取时,结构会自动更改为以下内容:

 test = value1 

我怎样才能改变结构呢?

 test test(1) test(1,1) = value1 

我的问题是,这个variables我遇到了我的代码中的各种问题(ubound,lbound,…)。

如果最后一列是B或更less,你可以强制test是一个只有一个单元格的数组:

 ' Define Last Column with a value LastCol = Sheets("Filter").Cells(20, Sheets("Filter").Columns.Count).End(xlToLeft).Column Col_Letter = Split(Cells(1, LastCol).Address(True, False), "$")(0) If LastCol <= 2 Then ReDim test(1 To 1, 1 To 1) test(1, 1) = Sheets("Filter").Range("B20").Value Else 'Read Data into variable test = Sheets("Filter").Range("B20:" & Col_Letter & "20").Value End If 

您可以检查长度..请尝试以下代码:

 Dim test As Variant test = Sheets("Filter").Range("B20:" & Col_Letter & "20").Value If Len(test) = 1 Then ReDim test(1, 1) test(1, 1) = Sheets("Filter").Range("B20:" & Col_Letter & "20").Value End If