西游记中孙悟空最神奇的本领之一就是拔根毫毛,瞬间变出无数个孙猴子。代码中的数组可谓神通广大,如何实现瞬间变身呢?其实也很简单。

Private Declare Sub CopyMemory Lib "kernel32" _Alias "RtlMoveMemory" ( _Destination As Any, _Source As Any, _ByVal Length As Long)
Sub CopyArray()Dim i As IntegerDim avntData As VariantDim avntNew(1 To 4)Dim avntCopy As VariantavntData = Array(0, 1, 2, 3, 4, 5, 6, 7, 8)Debug.Print "avntData:" & Join(avntData, ",")avntCopy = avntDataDebug.Print "avntCopy:" & Join(avntCopy, ",")CopyMemory ByVal VarPtr(avntNew(1)), _ByVal VarPtr(avntData(3)), _4 * 16Debug.Print "avntNew:"; Join(avntNew, ",")
End Sub
  • 照葫芦画瓢 – 全复制
    新数组名 = 原数组名,第13行代码克隆产生一个完全相同的数组。示例代码中的avntCopy = avntData将avntData数组内容全部复制到数组avntCopy中,也就是说两个数组完全相同。
  • 断章取义 – 部分复制
    使用API函数CopyMemory可以复制指定位置开始的指定数量的数组元素到一个新数组。参数Destination指定目标数组在内存中的起始地址,参数 Source指定源数组中需要复制的元素在内存中的起始地址, 参数Length指定复制的内存空间尺寸(单位是字节)。
    VarPtr(avntNew(1))获取目标数组中第一个元素的内存地址,与此类似VarPtr(avntData(3))获取源数组中第2个元素(下标下届为0)的内存地址,avntData是Variant型数组,每个元素需占用16个字节内存空间,4为所要的单元个数,即复制4个数组元素。

【立即窗口】中的输出结果:

avntData:0,1,2,3,4,5,6,7,8
avntCopy:0,1,2,3,4,5,6,7,8
avntNew:3,4,5,6

VBA中数组72变(随心所欲复制)相关推荐

  1. VBA中数组(Array)与随机数(Rnd)的使用

    作者: 奔跑的犀牛先生 本文链接:https://blog.csdn.net/xuemanqianshan/article/details/88962097 一 数组 array 1.1 数据定义 静 ...

  2. 看我72变:解决Entity Framework中枚举类型与tinyint的映射问题

    <看我72变>是蔡依林的一首歌,"我要洗心革面,人定可以胜天,梦想近在眼前..." 在代码世界中,有一种常见的"变" -- 类型转变.这篇文章分享的 ...

  3. java中数组的复制

    数组复制使我们在编程过程中经常要使用到的,在java中数组复制我们大概能够分为两种,一种是引用复制,还有一种就是深度复制(复制后两个数组互不相干). 以下我们就通过測试的方法来具体看看什么是引用复制和 ...

  4. python去除数组缺失值_动态数组的应用,VBA中如何利用动态数组去除重复值的第二讲...

    大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法第二部分.在上一讲中,我们讲了知识点的利用,其一是Filter函数,其二是ReDi ...

  5. Java黑皮书课后题第7章:*7.12(倒置数组)7.7节中的reverse方法通过复制到新数组实现倒置。改写方法将参数中传递的数组倒置,并返回该数组。编写一个测试程序,输入10个数字,倒置它们并显示

    7.12(倒置数组)7.7节中的reverse方法通过复制到新数组实现倒置.改写方法将参数中传递的数组倒置,并返回该数组.编写一个测试程序,输入10个数字,倒置它们并显示 题目 题目描述 破题 代码 ...

  6. 【转】C#中数组复制的4种方法

    C#中数组复制的4种方法 from:http://blog.csdn.net/burningcpu/article/details/1434167 今天旁边的同事MM叫我调了一段程序,她想复制一个数组 ...

  7. 建立数组并写入数据_VBA数组与字典解决方案第37讲:在VBA中字典的应用

    大家好,我们今日继续讲解VBA数组与字典解决方案第37讲内容:在VBA中字典的应用.对于字典,也许许多的朋友对此比较陌生,在有的语言里字典也称之为MAP,应用也是比较广泛的. 字典,其实就是一些&qu ...

  8. c++删除数组中重复元素_在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法...

    大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...

  9. Java中数组复制的几种方式以及数组合并

    java字符串数组合并,可以使用array.copy复制方法,如下代码: 1.Object.clone() 简单直接,只能对源数组完整地复制 2.Arrays.copyOf(T[] original, ...

最新文章

  1. mysql 5.5半同步复制_MySQL5.5配置安装半同步复制
  2. 第二章: 第二课 内容处理-插入图片
  3. 开启sql server2008的1433端口
  4. win10安装时有个修复计算机,win10出现故障,在安全模式下安装Windows更新,彻底修复问题...
  5. LeetCode 141. Linked List Cycle (链表循环)
  6. Android开发笔记(一百三十三)导航视图NavigationView
  7. 卷积云神经网络_有卷积云的北京天空好美!是不是还有池化云?全连接云?
  8. 条码打印软件如何实现二维码内容换行显示 1
  9. FPGA中case语句4选1数据选择器
  10. 多 UI 版本网页五子棋实现
  11. 用来处理gwdac网站爬取的实验数据的python代码
  12. 采集工具助力企业拓客,让你的业务快速扩张
  13. Broccoli Tree Creator 使用说明 3_3、Girth Transform Node (周长变换节点)
  14. Java韩顺平02变量
  15. 安卓仿微信界面,导航,右上角菜单栏
  16. LDPC码动态调度算法
  17. npm模块之opn使用教程(node **.js直接再浏览器中打开相应的文件)
  18. JavaWeb教务管理系统(选课评教,框架SpringMvc+Hibernate)
  19. 通用流量录制回放工具 jvm-sandbox-repeater 尝鲜 (三)—— repeater plugin 开发
  20. 瑕瑜互见的网易新财报

热门文章

  1. 解决SELECT list is not in GROUP BY clause and contains nonaggregated column ‘XXX’
  2. 晨之替——谷川 俊太郎
  3. canvas整体放大_Canvas实现图片放大缩小移动操作
  4. vs行尾不一致,是否将行尾标准化的问题
  5. 深度解析Android Q cutout刘海屏
  6. python多级菜单_多级菜单.py
  7. Cell Stem Cell | 杨东赫等建立全面的人类胚胎心脏多谱系发育图谱
  8. matlab启动慢的解决方法
  9. Excel if函数用法
  10. 用python搭建 百万答题 、自动百度搜索答案