精华内容
下载资源
问答
  • VBA数组赋值(1/2)-- 一维数组

    千次阅读 2020-04-04 02:15:16
    以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为一维数组赋值(或者说如何创建一维数组)。

    以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为一维数组赋值(或者说如何创建一维数组)。

    Option Base 1
    Sub demo1()
        Dim myArray
        myArray = Array(1, 2, 3)
    End Sub
    

    生成的数组如下图所示,值得注意的地方是,如果没有第1行代码,那么数组下标下界将从0开始。
    在这里插入图片描述
    既然是Excel VBA,大家自然会想到借助工作表中的行和列来实现给数组赋值,工作表中内容如下。

    在这里插入图片描述
    示例代码如下。

    Sub demo2()
        Dim arrRow, arrCol
        arrCol = Range("A1:A3")
        arrRow = Range("A1:C1")
        Stop
    End Sub
    

    执行结果如下图所示,和大家相信的可能并不相同,arrRow是1x3的二维数组,arrCol是3x1的二维数组,无论行数据还是列数据都不能直接产生一维数组。
    在这里插入图片描述
    这次我们拿出Excel中著名的神器“乾坤大挪移” – Transpose,示例代码如下。

    Sub demo3()
        Dim arrRow, arrCol
        arrCol = Application.Transpose(Range("A1:A3"))
        arrRow = Application.Transpose(Range("A1:C1"))
        Stop
    End Sub
    

    执行结果如下图所示,arrCol成功转换为有3个元素的一维数组,但是arr 则由1x3的二维数组,转换为3x1的二维数组。
    在这里插入图片描述

    结论:列数据经过Transpose可以转换为一维数组。

    展开全文
  • VBA数组赋值(2/2)-- 二维数组

    千次阅读 2020-04-04 02:16:19
    以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为二维数组赋值(或者说如何创建二维数组)。

    以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为二维数组赋值(或者说如何创建二维数组)。

    借助工作表为二维数组赋值就非常简单直接了,示例代码如下。

    Sub demo4()
        Dim myArray
        myArray = Range("A1:C3")
        Stop
    End Sub
    

    如愿以偿的生成了3x3的二维数组。
    在这里插入图片描述
    如果数组中的数据是在代码中生成的,也不是必须要借助工作表单元格,才能实现为二维数据赋值,很多时候从代码执行效率考虑,一般都尽量少对工作表对象进行读写操作。示例代码如下。

    Sub demo5()
        Dim myArray1, myArray2
        myArray1 = [{"1","11","111";"2","22","222";"3","33","333"}]
        myArray2 = Array(Array("1", "11", "111"), Array("2", "22", "222"), Array("3", "33", "333"))
        Stop
    End Sub
    

    运行结果如下。第3行代码实现与demo4中完全相同的结果。其中[ ... ]Evaluate方法简写形式。
    在这里插入图片描述
    第4行代码产生的是一个嵌套数组,也是有3个元素的一维数组,但是每个元素中保存的数据仍然是数组,例如myArray2(1)是个包含3个元素的数组,其值分别为"1", "11", "111",注意这种嵌套数组的引用方式与普通二维数组是不同的(插图中黄色高亮部分)。

    展开全文
  • VBA数组赋值

    2012-04-05 23:30:05
    先说一下,刚才一个错误...数组是这样赋值的: Dim a2(10) As Integer '10是可以使用的最大上标,这和C语言不太一样 Dim a3(-2 To 10) As Integer '也可以定义下标 Dim a1() As Integer '定义变长数组...
    先说一下,刚才一个错误的操作,连保存的草稿都没了,这也太悬了。以后还是在本地写好了再放上来。
    
    数组是这样赋值的:
    Dim a2(10) As Integer
    '10是可以使用的最大上标,这和C语言不太一样
    Dim a3(-2 To 10) As Integer
    '也可以定义下标

    Dim a1() As Integer
    '定义变长数组 动态数组
    ReDim a1(10)
    '重新定义数组的长度
    如果需要保存原来的数组中的数据,则使用:
    ReDim Preserve a1(10)
    如有特殊需要要将下标默认定义为1,则需要声明:
    Option Base 1

    Debug.Print LBound(a1)
    Debug.Print UBound(a1)
    显示数组的上下界

    定义二维数组:
    Dim MyArray(-2 To 9, -8 To 12)

    当定义好了一个数组,可以直接赋值给另外一个
    MyArray2 = MyArray1

    清除数组
    erase MyArray2
    清除之后数组内部成为初始值,对于动态数组来说,在没有赋数组长度值时,没有上下界,清除之后也没有,如果使用UBound,运行时会出现错误。
    erase之后,动态数组并不是不存在了,这一点从可以继续redim就可以知道。这一点《Excel VBA 入门与应用典型实例》说错了。
    展开全文
  • 巧用公式实现VBA数组快速赋值

    千次阅读 2020-07-03 06:44:53
    VBA中可以使用数组处理工作表中的数据,是个尽人皆知的秘密了,读取数据加载到数组中也很简单。 工作表中数据如下图所示,需要将B1:G1的内容加载到数组中。这个该如何弄到一个数组中呢,先分别读入数组,然后再使用...

    VBA中可以使用数组处理工作表中的数据,是个尽人皆知的秘密了,读取数据加载到数组中也很简单。
    工作表中数据如下图所示,需要将B1:G1的内容加载到数组中。
    在这里插入图片描述
    哒哒,一行代码瞬间生成一个二维数组,不要问为什么是二维数组?为什么使用方括号?如果真的对这两点有疑问,请自行爬楼翻翻我以前的博文,都有详细讲解。

    Sub Demo1()
        arr = [B1:G1]
    End Sub
    

    可是某些英明(奇葩 )的领导非要这样的格式,完全不知道这是为了个毛呀!?
    在这里插入图片描述
    这个该如何弄到一个数组中呢,先分别读入数组,然后再使用动态数组就和合并成2x3的数组了。

    Sub Demo2()
        Dim crr(1 To 2, 1 To 3)
        arr = [B1:D1]
        brr = [E2:G2]
        For i = 1 To 3
            crr(1, i) = arr(1, i)
            crr(2, i) = brr(1, i)
        Next
    End Sub
    

    有些不甘心,这么简单的一个事情,要这么多行代码。千万不要忘记,我们是在用Excel中玩儿VBA,Excel中强大的公式可以把这个简化为一行代码就能实现。
    啥也别说了,直接上代码。

    Sub Demo3()
        arr = [Choose({1;2},B1:D1,E2:G2)]
        brr = [if({1;0},B1:D1,E2:G2)]
    End Sub
    

    【代码解析】
    两行代码都可以实现一次性加载到2x3数组中,实现思路是相同的,只是使用的公式不同。
    Choose函数根据指定的索引值,从参数串中选择值。此处的参数是两个单元格区域,这样就分两次分别选中了B1:D1和E2:G2单元格区域。
    工作表中的If函数将不用解释了,这里需要注意的是,数组{1;0}两个数字的顺序和后面单元格区域的顺序要正确匹配。


    看似旁门左道,其实是超级敏捷的实现方式,综合使用Excel的各种技能,才是最高境界。

    展开全文
  • 数组大小不确定,不适合直接给较大的固定长度,直接赋值会出现数组下标越界的错误,该怎么办
  • Hello,大家好,在前面我们说过Excel函数中间的数组含义,...VBA数组可以理解成是储存的一组数据的一个地方。他的数据类型可以是数字,文本,对象,当然也可以是VBA数组。可能有些同学会觉得比较抽象,但是经过慢慢...
  • vba数组赋值

    万次阅读 2016-02-24 11:41:05
    '向VBA数组中写入数据    '1、按编号(标)写入和读取     Sub t1() '写入一维数组   Dim x As Integer   Dim arr(1 To 10)  arr(2) = 190  arr(10) = 5   End Sub    Sub t2() '向二维数组写入数据和读取 ...
  • VBA 数组定义,赋值,一维数组

    万次阅读 2019-12-19 13:35:43
    1VBA数组的基础定义 1.1什么是数组? 就是一组数/字符等用同一个名字(这个名字就是:数组名),作为一个整体存储在一起 1.2什么是元素 这些被保存在同一个数组名下的,多个内容,称为element 元素 数组里的元素是...
  • 只是定义了数组,但由于把数组赋值时放到了if语句里,导致可能由于没有符合if语句的情况而没有给数组具体赋值,然后对数组进行其他操作(比如进行数组内数值排序)就会报错。 我想问下,怎么判断通过dim arr()...
  • '所谓的不能给数组赋值 'Dim arr2(3 To 15) 这里结合是错误的 'array()函数返回的必须是变量,或变量对等的动态数组,不能赋值给静态数组 'arr2 = [{3, 4, 5, "6", 7, 0, 1, 2, 8, 9}] 也不行 'arr2() = Array(3, 4,...
  • office 2019 excel 在将数组赋值给某些单元格区域, 比如[d1]单元格作为开始格, 进行赋入, 如果筛选过的情况, 在筛选显示出来的那些区域会显示d1格中的内容, 而非被赋入数组中实际的内容, 而筛选隐藏部分则是正常的...
  • 数组必须定义大小后才可以使用? 如果是用for,一般需要知道循环次数,也就是单元格个数 如果用 for each ,while等,能吗?能 比如原始数据 ID 11 47 11 48 27 30 43 Sub get_arr() Dim arr1...
  • 今天和大家要说的是VBA数组的应用,上篇文章我们说的是数组的基础知识点,有不明白的小伙伴可以点击链接进行知识点回顾Excel VBA 数组基础知识,初学者不可不学的关键知识,今天主要说说数组的几个操作方法,这个是...
  • 不能将一个数组赋值给另一个数组

    千次阅读 2018-10-16 10:24:17
    不能将一个数组赋值给另一个数组,但可以将一个string对象赋给另一个string对象 例如: char charr1[20]; //create an empty array char charr2[20] = "jaguar";//create an initialized array string...
  • myarray=rs.GetRows'将记录集结果赋值数组示例语句 重置数组大小 ReDim myarray(UBound(myarray) + 1)'重置数组大小不保留原来数据 ReDim Preserve myarray(UBound(myarray) + 1)'重置数组大小且保留原来数据 将...
  • vba 数组 数组参数

    千次阅读 2019-08-10 18:00:37
    关于赋值 我看了很多本书都没有看到这样子的,包括官方文档,所以我就写了下来。 sub a() dim a() dim c() a = array(1,2,3,4) '这里a后面的()可以给也可以不给 c=a() end sub sub a(paramarray a() as ...
  • 本章主要内容:认识数组数组应用案例,小结。
  • Sub 把单元格值赋给数组() Dim ary() Dim i, j, k, rowall, columnall, rownum As Integer rownum = InputBox("输入标题行所占行数") rowall = Cells(Rows.Count, 1).End(xlUp).Row columnall = Cells(1, Columns....
  • ![图片说明](https://img-ask.csdn.net/upload/201705/28/1495933094_506614.jpg) !... 如何把 数组 比如 如图1 序号这一列 有序的插入到 图2的 ordernum 表格里面 ,插入完的效果类似图2那样有序的排列
  • VBA数组完全教程

    万次阅读 多人点赞 2017-06-25 11:45:15
    兰色幻想VBA数组入门教程10集 1. 前言:不要把VBA数组想的太神秘,它其实就是一组数字而已。 2. 数组的维数: Sub 数组示例() Dim x As Long, y As Long Dim arr(1 To 10, 1 To 3) '创建一个可以容下10行...
  • Excel VBA(04)数组和字典

    千次阅读 2020-04-01 12:02:38
    数组 字典
  • VBA遍历数组的2种方式

    千次阅读 2018-12-20 17:26:00
    1.情景展示  VBA编程,如何对数组进行遍历? 2.解决方案  方式一:使用for循环 Sub 遍历数组1() '声明一个变量 Dim Arr As Variant ... '变量类型指定为数组赋值 Arr = Array(1, 2, 3, 4, 5) ...
  • 一维数组可以通过这样一行代码来整体赋值:arr = Array("你", "我", "他", "1", "2", "3", "aa", "bb", "cc")那么,如果想给二维数组采用类似的方法来整体赋值,要怎么办呢? arr=array("你", "我", "他" ;"1", "2...
  • VBA数组

    千次阅读 2018-12-08 22:18:32
    一系列值存储在单个变量中时,则称为数组变量。 一、一维数组 数组声明 Method 1 : Using Dim Dim arr1() 'Without Size 'Method 2 : Mentioning the Size Dim arr2(5) 'Declared with size of 5 'Method 3 : ...
  • VBA 数组导入单元格

    千次阅读 2013-05-31 15:09:53
    第3例我们学会了如何把单元格中的数据搬入内存,变身为VBA数组。那么,VBA数组怎么输回到单元格中呢?就象菜做好了,怎么更快的上桌呢?1、二维数组的导入:VBA中常见的数组形式有一维数组和二维数组,相比一维数组...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,653
精华内容 661
关键字:

vba数组赋值