Excel精英培训网

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

[已解决]VBA中定义数组时如何用变更来定义大小

[复制链接]
发表于 2014-5-22 14:58 | 显示全部楼层 |阅读模式
本帖最后由 蝶·舞 于 2014-5-22 15:32 编辑

我想把一些内容赋值到一个数组中,但想要赋值的内容行数是不定的,列数是固定的,那么我该如何定义这个数组,直接dim arr()是否可行?
另:追加一个问题,我定义好需要赋值的数组后,如我定义一个dim arr(4,8)
我想这个数组的第一列全部为"A",第二列全部为"XX",第三列全部为”ZGG",第四列到第八列,才取工作表相应的行列区域(A1:E4)

最佳答案
2014-5-22 15:20
111.rar (7.15 KB, 下载次数: 25)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-5-22 15:06 | 显示全部楼层
回复

使用道具 举报

发表于 2014-5-22 15:17 | 显示全部楼层
先用dim arr()定义,
再用Redim preserve arr(1 to ?,1 to ??)重定义。
回复

使用道具 举报

发表于 2014-5-22 15:18 | 显示全部楼层
根据你描述的情况,有以下建议:
       1 声明一个变量,用来装单元格区域数据
              dim arr
                     arr=range(a1:g4)
       2 再声明一个数组,通过循环设置前3列的值和引用arr中的值
             dim arr1(1 to ubound(arr),1 to 10)
             for x=1 to ubound(arr)
                         arr1(x,1)="a"
                         arr1(x,2)="xx"
                         arr1(x,3)="zgg"
                        for y=1 to 7
                              arr1(x,y+3)=arr(x,1)
                         next y
              next x
    另外,新手学数组时有一个误区,就是代码越短越好,循环会很慢。其实高效的程序代码看上去都是很复杂的。100万次的循环,如果没有复杂的计算也不会浪费大量时间,更别提只是几百几千的循环,循环的时间可以忽略的。
回复

使用道具 举报

发表于 2014-5-22 15:20 | 显示全部楼层    本楼为最佳答案   
111.rar (7.15 KB, 下载次数: 25)
回复

使用道具 举报

发表于 2014-5-22 15:23 | 显示全部楼层
Sub Click()
    Dim arr(), brr(), r%, c%, i%, j%

    r = 4: c = 8
    ReDim arr(1 To r, 1 To c)
    brr = [A1:E4].Value

    For i = 1 To r
        arr(i, 1) = "A"
        arr(i, 2) = "XX"
        arr(i, 3) = "ZGG"
        For j = 4 To c
            arr(i, j) = brr(i, j - 3)
        Next j
    Next i
    [g1].Resize(r, c) = arr

End Sub
回复

使用道具 举报

发表于 2014-5-22 16:52 | 显示全部楼层
可怜了四楼
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 09:49 , Processed in 0.282286 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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