打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel 数组定义

Sub 单元格区域转化为数组()
    Dim f As Variant
    f = ActiveSheet.Range('a1:c4')
    Debug.Print f(1, 1)
End Sub
在这一段代码里,如果将“dim f as variant”,改为“dim f() as variant”,提示“类型不匹配”的错误
Sub 动态数组演示()
    Dim myArr() As String
    ReDim myArr(0)
    myArr(0) = '一车间'
    ReDim Preserve myArr(2)
    myArr(1) = '二车间'
    myArr(2) = '三车间'
    Debug.Print myArr(0), myArr(2)
End Sub
在这一段代码里,如果将“Dim myArr() As String'改为“Dim myArr As String”,提示“缺少数组”的错误
我的困惑在于,定义数组时,数组名后面到底什么时候需要加括号,加不加括号有什么区别?或是说什么情况下需要加括号,什么情况下不需要加括号?

分享到新浪微博
只看楼主 | 倒序浏览

有 6 条回复

2楼 wpxxsyzx LV16

2014-10-8 17:21
简单的说,执行f = ActiveSheet.Range('a1:c4')之前,f就是一个变体变量,执行之后成为一个数组,不能将单元格区域直接赋值给一个数组,所以,你最后的问题也就不存在了

3楼 liu-aguang LV6

2014-10-8 17:58
  ActiveSheet.Range('a1:c4')
这个区域它被组织为一个Variant变量下包含数组(当然还有其它),所以语句:
Dim f As Variant
f = ActiveSheet.Range('a1:c4')
将之赋与一个Variant变量(f),则转化为变量f包含一个数组.

而语句:
Dim f() As Variant
f = ActiveSheet.Range('a1:c4')
是把一个Variant变量赋与一个数组,所以提示'类型不匹配'

但可以:
Dim f() As Variant
f = ActiveSheet.Range('a1:c4').value
这样明确指定区域的值,它本身就是一个数组,所以可以直接传递给Variant数组.

4楼 liu-aguang LV6

2014-10-8 18:09
本帖最后由 liu-aguang 于 2014-10-8 18:10 编辑

如果在Range前面不加限定则下面语句都可以正常执行:
dim f,k()
f=range('a1:c4')
f=range('a1:c4').value
k=range('a1:c4')
k=range('a1:c4').value
原因是Range的默认属性是Value,它是一个数组.
上面前两句与后两句其意义是不同:
前两句是将数组赋与一个Variant变量,让其包含一个数组.
后两句是将一个数组整体传递给另一个数组.

5楼 香川群子 LV7

2014-10-8 20:23
简单说,是这样子:

一、在VBA中自己定义数组时,需要用()

如: Dim arr(1 To 10)    【必须使用常量】
或    ReDim arr(1 To m)  【可以使用变量、且可以ReDim改变最后一维的大小】

注意,这样的数组变量不能用 arr=Range的方式赋值。(两者类型不同、后者是Variant类型变量)

教条的定义数组方式为:
Dim arr()
ReDim arr(1 To 5)

呵呵,之前的Dim应该是多余的。

…………

二、Dim arr 或 Dim arr as Variant

此时,可以把工作表Range区域直接赋值给arr得到一个Variant类型的二维数组。

这里,Variant是变量类型,而二维数组是其结果。实际上不能认为这里的arr是一个数组类型的变量。


………………
总结:
一、如果你想要把工作表Range区域读入VBA数组变量,那么不允许使用括号,即不能 Dim arr()
二、如果你想在VBA中直接定义数组变量(往往会通过直接循环计算来赋值),那么应该用括号 Dim arr()



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA入门(二)数组和字典
VBA系列讲座(4):理解变量
【烟花原创】VBA零基础之第111篇VBA数组(一)
别怕,Excel VBA其实很简单(三)
Excel VBA 学习笔记4:VBA变量
VBA基础一:对象、属性、方法、变量
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服