Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 爱疯

[已解决]声明数组一例

[复制链接]
发表于 2010-8-20 08:27 | 显示全部楼层

爱疯需要搞清楚几个基本的概念,静态数组、动态数组、数据类型

Sub dd()
    Dim arr(1 To 10, 1 To 3)    '静态数组
    arr = [a1:c10].Value '错!静态数组不能接受如此动态的赋值
End Sub


Sub ee()
    Dim arr()
    '这个是动态数组,尺寸和维数都是根据你的赋值会改变的
    ReDim arr(1 To 10, 1 To 4)  '这里我写4,在赋值的时候同样会变成3
    arr = [a1:c10].Value

End Sub


Sub a()
'    Dim arr(1 To 5) As String
'    Dim arr() As String '下面这种方式接受的是Variant类型的变量,会提示类型不匹配
'    Dim arr() As Variant '这句就可以
    Dim arr()

    arr = [{"","A","B","C","D"}]
    Stop
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-8-20 09:06 | 显示全部楼层

QUOTE:
以下是引用amulee在2010-8-20 8:27:00的发言:

爱疯需要搞清楚几个基本的概念,静态数组、动态数组、数据类型

Sub dd()
    Dim arr(1 To 10, 1 To 3)    '静态数组
    arr = [a1:c10].Value '错!静态数组不能接受如此动态的赋值
End Sub


Sub ee()
    Dim arr()
    '这个是动态数组,尺寸和维数都是根据你的赋值会改变的
    ReDim arr(1 To 10, 1 To 4)  '这里我写4,在赋值的时候同样会变成3
    arr = [a1:c10].Value

End Sub


Sub a()
'    Dim arr(1 To 5) As String
'    Dim arr() As String '下面这种方式接受的是Variant类型的变量,会提示类型不匹配
'    Dim arr() As Variant '这句就可以
    Dim arr()

    arr = [{"","A","B","C","D"}]
    Stop
End Sub

谢谢阿木!

静态数组也叫定长数组;动态数组也叫变长数组。是吧?

1、5楼的为什么,不知帮助怎样解释?

2、对于dd()错误的原因,我还是觉得是我说的那个原因。

3、为什么redim又可以,这点我觉得如所你说,是因为arr声明时是动态数组。

回复

使用道具 举报

发表于 2010-8-20 09:22 | 显示全部楼层    本楼为最佳答案   

QUOTE:
以下是引用爱疯在2010-8-20 9:06:00的发言:

谢谢阿木!

静态数组也叫定长数组;动态数组也叫变长数组。是吧?

1、5楼的为什么,不知帮助怎样解释?

2、对于dd()错误的原因,我还是觉得是我说的那个原因。

3、为什么redim又可以,这点我觉得如所你说,是因为arr声明时是动态数组。

1、'    Dim arr() As String
'    Dim arr() As Variant '这句就可以
    Dim arr()
   
    '下面这种方式右边得到的是Variant类型的变量,如果将数组定义成String就会提示类型不匹配
    arr = [{"","A","B","C","D"}]
    '注意,用array函数得到的也是Variant类型的变量
End Sub

2、dd那个我们观点是一致的,就是叙述不同:所谓静态数组就是不能调节大小的。

回复

使用道具 举报

 楼主| 发表于 2010-8-20 11:17 | 显示全部楼层

  • 字符串类型的数组常量,不可声明为string
  • 字符串类型的常量,可声明为string
  • array函数得到的也是Variant类型的变量

就不问为什么了,还是先记着吧[em11]

回复

使用道具 举报

发表于 2010-8-20 12:05 | 显示全部楼层

又清晰了一些,,,

回复

使用道具 举报

 楼主| 发表于 2010-8-20 15:36 | 显示全部楼层


Sub ff()
    Dim arr() As Variant
    arr = Array(1, 2, 3, 4)
End Sub

Sub gg()
    Dim arr() As String
    arr = Split("1,2,3,4", ",")
End Sub

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-6 10:01 , Processed in 0.250765 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表