在VBA中将范围指定给数组
我希望将excel数据放入VBA中的数组中,因此我执行以下操作:在VBA中将范围指定给数组,vba,excel,Vba,Excel,我希望将excel数据放入VBA中的数组中,因此我执行以下操作: Dim Arr() As Variant Arr = ActiveWorkbook.Sheets("Sheet1").Range("C28:R29") 一旦我运行这个程序,我就会得到一个类型不匹配错误13。 我认为问题是因为第一行(总共2行)表示字符串(标题),第二行表示数字,所以我尝试只获取一行,如下所示: Arr= ActiveWorkbook.Sheets("Sheet1").Range("C28:R28") 没用,我还
Dim Arr() As Variant
Arr = ActiveWorkbook.Sheets("Sheet1").Range("C28:R29")
一旦我运行这个程序,我就会得到一个类型不匹配错误13。
我认为问题是因为第一行(总共2行)表示字符串(标题),第二行表示数字,所以我尝试只获取一行,如下所示:
Arr= ActiveWorkbook.Sheets("Sheet1").Range("C28:R28")
没用,我还是遇到同样的问题
有人知道会出什么问题吗
问候
克劳兹很简单,只需添加
.Value
(我不久前就发现了这个把戏,我已经是粉丝了!)
我一直不明白这一点
Arr=Range(“C28:R28”)
可以工作,但Arr=ActiveWorkbook.Sheets(“Sheet1”)。Range(“C28:R28”)
不能工作。这两种变体不是都返回一个范围对象吗?有什么想法吗?有很多,但没有用。我恐怕,我从来没有使用过Array=Range
,所以我现在真的没有用,但它可能与您范围内的数据类型(数字、文本等)有关。但我帮不了你更多@R3uK非常感谢您的提示,它现在可以正常工作了。在数组中放置范围时,使用Value2
而不是Value
。Charles Williams在他的博客中对此做了很好的解释。好吧,这里有一个链接:总之,.Value
转换一些数据以保留日期之类的,并以4位数的精度减少数字,.Value2
更快,因为它不转换任何内容,因此不会威胁到数据的完整性!
Arr= ActiveWorkbook.Sheets("Sheet1").Range("C28:R28").Value2