Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中将范围指定给数组_Vba_Excel - Fatal编程技术网

在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") 没用,我还

我希望将excel数据放入VBA中的数组中,因此我执行以下操作:

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