一段EXCEL VBA代码不明白,请高手指教

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:44:40
'第2个工作表的表格合到第1个工作表里,第4个合到第3个里,第6个合到第5个里... ...
Sub 按钮1_单击()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each sh In Sheets
If Trim(sh.Name) Like "*(*[0-9])" Then 'Trim返回不带前导与后续空格的字符串副本
xyz = Val(Split(Split(sh.Name, "(")(1), ")")(0)) 'Split返回基于 0 的一维数组,其中包含指定数目的子字符串。
If xyz Mod 2 = 0 Then 'Mod求余,偶数的余数全是0
sh.UsedRange.Copy Sheets("zg" & " (" & xyz - 1 & ")").[a15] '好像是从第15行开始粘贴
With Sheets("zg" & " (" & xyz - 1 & ")")
'.[a15] = "" '清空第15行内容
sh.Rows(1).Copy
.Rows(15).PasteSpecial Paste:=xlPasteFormats
sh.Rows("2:13").Copy
.Rows("16:27").PasteSpecial Paste:=xlPasteFormats
sh.Rows(14).Copy

代码的功能是将当前的偶数的sheet复制到前一个奇数的sheet,然后删除偶数的sheet,所以你从现象上看,好像是两个sheet的合并。

注释如下:

Sub 按钮1_单击()
'关闭屏幕更新,如果设置成true,那么会看到excel的值一个格子一个格子的填充。
Application.ScreenUpdating = False
'关闭显示警告信息框
Application.DisplayAlerts = False
For Each sh In Sheets
'判断sheet名字,在sheet名称中包含(0),(1),...,(9)的sheet名称
If Trim(sh.Name) Like "*(*[0-9])" Then
'将sheet名称按照(分隔成一维数组,以sheet名称是zg(1)为例,则取出的内容是 1)
'然后将第二个元素按照)分隔成一维数组,以sheet名称是zg(1)为例,则取出的内容是 1
'所以最后得到的xyz是1
xyz = Val(Split(Split(sh.Name, "(")(1), ")")(0))
'如果sheet的序号是偶数的时候
If xyz Mod 2 = 0 Then
'将这个sheet所有偶数页已经使用的单元格中的内容复制到前一页(奇数页)的第a列第15行
'例如,现在在第zg(2)中的内容会复制到zg(1)即,奇数页的第a列第15行开始的地方。
sh.UsedRange.Copy Sheets("zg" & " (" & xyz - 1 & ")").[a15]
With Sheets("zg" & " (" & xyz - 1 & ")")
&