Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2031|回复: 5

[已解决]请老师们帮我备注一下这几行代码是什么意思

[复制链接]
发表于 2015-12-21 10:28 | 显示全部楼层 |阅读模式
本帖最后由 mazeboy 于 2015-12-21 18:15 编辑

如下几行代码,每行代表什么意思呀,请帮我备注一下,
另外
如下代码合并时会选择所有的表格进行合并,如果让他只合并我指定的表格,
比如我只要合并sheet3  sheet5  sheet7  sheet9这4个表格,其它不要,应该怎么改________________________________________________________________________________
Sub 合并()
hd = Sheets(1).[a2:e2]
lr = 3                     
Application.ScreenUpdating = False    '屏幕闪烁关闭
For Each sh In Sheets
    If Not InStr(sh.Name, "合并") > 0 Then
        sh.Activate
        arr = sh.Range("a3:e" & [a65536].End(3).Row)
        Debug.Print UBound(arr): Debug.Print sh.Name
        Sheets(9).Select   
        Range(Cells(lr, "b"), Cells(lr + UBound(arr) - 1, "f")) = arr
        Range(Cells(lr, "a"), Cells(lr + UBound(arr) - 1, "a")) = sh.Name
        lr = lr + UBound(arr)
        Erase arr
    End If
Next
[a1] = "榜单": [b1:f1] = hd: Columns("a:f").AutoFit  
Application.ScreenUpdating = True    '屏幕闪烁打开
End Sub

最佳答案
2015-12-21 11:10
  1. Sub 合并()
  2. hd = Sheets(1).[a2:e2]    '将sheet(1)A2到E2赋值给hd
  3. lr = 3                               'lr=3
  4. Application.ScreenUpdating = False    '屏幕闪烁关闭
  5. For Each sh In Sheets         '对所有工作表进行循环
  6.     If Not InStr(sh.Name, "合并") > 0 Then          '如果工作表名称不含“合并” 则
  7.         sh.Activate                           '激活工作表
  8.         arr = sh.Range("a3:e" & [a65536].End(3).Row)   '将A3到E列最后一个非空单元格内容赋值给数组arr
  9.         Debug.Print UBound(arr): Debug.Print sh.Name   '打印arr数组上限  打印工作表名称
  10.         Sheets(9).Select                 '选中sheet(9)
  11.         Range(Cells(lr, "b"), Cells(lr + UBound(arr) - 1, "f")) = arr    '将arr赋值给B(lr)到F(...)对应区域
  12.         Range(Cells(lr, "a"), Cells(lr + UBound(arr) - 1, "a")) = sh.Name  '将工作表名称赋值给A(lr)到A(...)对应区域
  13.         lr = lr + UBound(arr)      'lr累加至arr数组上限
  14.         Erase arr    '清除arr
  15.     End If
  16. Next
  17. [a1] = "榜单": [b1:f1] = hd: Columns("a:f").AutoFit     'A1=榜单  B1到F1等于hd    A到F列自动为合适列宽
  18. Application.ScreenUpdating = True    '屏幕闪烁打开
  19. End Sub
复制代码
发表于 2015-12-21 10:33 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-12-21 10:54 | 显示全部楼层
L50814026 发表于 2015-12-21 10:33
http://www.excelpx.com/thread-186721-1-1.html
楼主不用谢我

谢谢,又多了一份学习资料。
但我现在想解决眼前的问题,能否帮我一下
回复

使用道具 举报

发表于 2015-12-21 11:10 | 显示全部楼层    本楼为最佳答案   
  1. Sub 合并()
  2. hd = Sheets(1).[a2:e2]    '将sheet(1)A2到E2赋值给hd
  3. lr = 3                               'lr=3
  4. Application.ScreenUpdating = False    '屏幕闪烁关闭
  5. For Each sh In Sheets         '对所有工作表进行循环
  6.     If Not InStr(sh.Name, "合并") > 0 Then          '如果工作表名称不含“合并” 则
  7.         sh.Activate                           '激活工作表
  8.         arr = sh.Range("a3:e" & [a65536].End(3).Row)   '将A3到E列最后一个非空单元格内容赋值给数组arr
  9.         Debug.Print UBound(arr): Debug.Print sh.Name   '打印arr数组上限  打印工作表名称
  10.         Sheets(9).Select                 '选中sheet(9)
  11.         Range(Cells(lr, "b"), Cells(lr + UBound(arr) - 1, "f")) = arr    '将arr赋值给B(lr)到F(...)对应区域
  12.         Range(Cells(lr, "a"), Cells(lr + UBound(arr) - 1, "a")) = sh.Name  '将工作表名称赋值给A(lr)到A(...)对应区域
  13.         lr = lr + UBound(arr)      'lr累加至arr数组上限
  14.         Erase arr    '清除arr
  15.     End If
  16. Next
  17. [a1] = "榜单": [b1:f1] = hd: Columns("a:f").AutoFit     'A1=榜单  B1到F1等于hd    A到F列自动为合适列宽
  18. Application.ScreenUpdating = True    '屏幕闪烁打开
  19. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-12-21 12:48 | 显示全部楼层
L50814026 发表于 2015-12-21 11:10

谢谢,谢谢,太详细了,
另外,只要合并指定工作表,比如 sheet3  sheet5 sheet7,三个表格

代码要怎么修改一下
回复

使用道具 举报

发表于 2015-12-21 12:55 来自手机 | 显示全部楼层
建议求助时上传附件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 23:56 , Processed in 0.293038 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表