Excel VBA 7.45 对所有工作表相同位置填充数据,你还在慢慢的复制粘贴吗?

前景提要()

在我们平常的工作中,经常会碰到这样的场景,一个报表了里面有多个工作表,我们需要对所有的工作表的相同位置添加相同的内容,比方说相同的标题栏,相同的结尾,这个时候你会选择如何操作呢?在其中一个表格中输入内容之后,慢慢的复制粘贴到所有的工作表?相信大部分童鞋都会选择这样操作的吧,今天我教给大家一个新的方法,可以通过一段非常简单的代码,同时对所有工作表的相同区域填充相同的内容

代码区

其实说起来效果和上节的效果差不多,只不过上节的代码中有需要选择的功能,如果碰到数据比较大的话,选择这个动作太多可能会导致报表本身出现卡顿,毕竟Excel本身的容量有限,今天我们这个方法会更加的高效一点

还是我们之前使用过的成绩表的案例,假设我们现在要在报表的最后面加上一个相同的结尾,就是报表的制作时间,方面后期查看

当然我们这里仅仅是其中一个工作表,我们还有其他的很多个个工作表,我们不太可能有时间去一个个的复制粘贴,因为这样明显不符合我们追求高效的工作效率的初衷相匹配,那么有什么办法能够快速实现这个需要求呢?

来看看代码

Sub tesyty() x = Array("Sheet1", "Sheet2", "Sheet3") Sheets(x).FillAcrossSheets Worksheets("Sheet2").Range("H22:I22")End Sub

瓦塔?那么简短?2句代码就实现了我们要复制粘贴到手软的功能?没错,我们来执行下代码

第二个工作表也有了相同的数据,第三个工作表也是一样 ,由于篇幅的关系,这里就不再单独展示了。

短短的两句代码就实现了我们之前要来来回回复制粘贴很多次的功能,不得不说VBA用起来真的好强大。

代码分析

今天的代码看起来比较的陌生,和我们之前使用的套路似乎有点不同,没错,今天的代码是我在看资料的过程中,无意中看到的

如果不是工作中有需要的话,确实接触不到这个代码

我们来看看代码的执行流程

x = Array("Sheet1", "Sheet2", "Sheet3")

这里将X理解为一个集合,或者是一个数组,里面有3个元素,分别代表者三个工作表。

array也可以理解为是数组的另外一种表示方式,和我们之前常用的arr()之类的效果是一样的。不过他组成的是一个一维数组

Sheets(x).FillAcrossSheets Worksheets("Sheet1").Range("H22:I22")

这句话就是今天的关键性代码,也是重点。

FillAcrossSheets,官方的解释是将单元格区域复制到集合中所有其他工作表的同一位置,理解过来就是讲我们工作表中某一个单元格的数据复制到集合中其他工作表的相同位置

这里要注意有两个重点

  1. 集合中必须含有数据源所在的工作表

  2. 复制的区域是来源的相同位置

这里来解释下

集合中必须含有数据源所在的工作表是什么意思呢?

比方说我们这个案例,我们的数据来源是sheet1的数据,所以集合X中必须含有sheet1

2.相同位置,就是sheet1的相同位置,仅仅会复制到其他集合中的所有工作表的第22行的位置,不会复制到第21行或者是其他的地方。

当然会有小伙伴们说,现在只有3个工作表,如果我有很多个工作表,一个一个的写到代码里面会很麻烦,有没有简单一点的方法呢?

来,看代码

Sub sss()Sheets.FillAcrossSheets Worksheets("Sheet1").Range("H22:I23")End Sub

更简单,一句话

Sheets.FillAcrossSheets Worksheets("Sheet1").Range("H22:I23")

sheets所代表的的内容已经在上节讲过了,就是当前工作薄的所有工作表,这样套进去,是不是更好理解了呢?

==============================================

(0)

相关推荐