Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1765|回复: 1

求助关于数组定义的问题

[复制链接]
发表于 2019-10-31 14:23 | 显示全部楼层 |阅读模式
本帖最后由 diebianhai@ 于 2019-10-31 14:25 编辑

   Sub dx8()
   Dim arr(), arr1(1 To 100000, 1 To 4)
     arr = Range("a1:d6")
     Dim x, k
     For x = 1 To UBound(arr)
      If arr(x, 1) = "B" Then
         k = k + 1
         arr1(k, 1) = arr(x, 1)
         arr1(k, 2) = arr(x, 2)
         arr1(k, 3) = arr(x, 3)
         arr1(k, 4) = arr(x, 4)
      End If
     Next x
    Range("a15").Resize(k, 4) = arr1
   End Sub

请问:
1.上面的例子中,arr在一开始的时候为什么不能写成dim arr(1 to 1000,1 to 4)?
2.arr1为什么一开始要写成arr1(1 To 100000, 1 To 4),而不能像arr一样,只写arr1或arr1()?

查找含b产品的行并显示

查找含b产品的行并显示
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-10-31 15:21 | 显示全部楼层
因为给数组直接赋值的时候,数组会优先根据数据来分配数组维度、长度,虽然你这里维度和长度都够装那些数据,但是程序还是要去给数组根据你的数据去分配维度长度,然后发现那个数组的维度、长度已经固定好了,所以这块分配的工作它没办法执行,就报错了

这样理解吧,数组相当于是一些容器,然后有一个部门专门负责来装东西,没固定箱子的时候,你给10个东西,这个部门就会给你找十个容器来装;但是如果说这个部门手上没有容器,只有一个大箱子,虽然说那个箱子装得下你的东西,但是这个部门的人不会去管那个箱子装不装的下,只会告诉你,我这里没有容器来给你装
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 17:05 , Processed in 0.174019 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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