excelperfect 本文将给出一段VBA代码,从非连续的单元格区域复制值并粘贴到另外指定的单元格区域。 如下图1所示,将右侧两个单元格区域的数据复制到左侧的两个单元格区域中。 图1 下图2是粘贴数据后的结果。 图2 如果我们直接同时复制右侧两个区域中的数据,由于Excel不允许对多重选择区域执行复制操作,会弹出如下图3所示的提示信息。 图3 看来并不如想像的那样简单!但是,我们可以使用VBA来完成。 首先定义数据区域名称和要复制到的区域的名称。 如下图4所示,将单元格区域H2:K4和G7:J9定义名称为“copyrng”。 图4 同样,将单元格区域C2:F4和B7:E9定义名称为“pasterng”,如下图5所示。 图5 按Alt+F11组合键,打开VBE,插入一个标准模块,输入下面的代码: Sub CopyRange() Dim i As Integer Dim j As Integer Dim strAddress As String strAddress = Range('pasterng').Address i =Len(strAddress) - Len(Application.WorksheetFunction.Substitute(strAddress,':', '')) For j = 1 To i Range('pasterng').Areas(j).Value =Range('copyrng').Areas(j).Value Next End Sub 代码中,Range('pasterng').Address返回代表引用的单元格区域地址的字符串,多个区域中间使用“,”隔开,而其中“:”号的个数就是引用的单元格区域数,所以代码: Len(strAddress) -Len(Application.WorksheetFunction.Substitute(strAddress, ':','')) 得到非连续区域的个数。 由于每个区域都属于Areas集合,使用一个循环遍历各个区域并执行复制粘贴操作。 运行CopyRange过程,即可实现上图2所示的效果。 注:本文学习整理自www.sumproduct.com,供有兴趣的朋友参考。 |
|
来自: hercules028 > 《VBA》