vba学习系列(7)--考勤表制作

17 篇文章 6 订阅

系列文章目录


前言

一、汇总所有工作表指定区域内容到指定工作表

Sub CopyRangesToSummary()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim summarySheetName As String
    
    summarySheetName = "考核汇总"
    
    ' 确保摘要工作表存在
    On Error Resume Next
    Set targetSheet = ThisWorkbook.Worksheets(summarySheetName)
    If Err.Number <> 0 Then
        ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)).Name = summarySheetName
        Set targetSheet = ThisWorkbook.Worksheets(summarySheetName)
    End If
    On Error GoTo 0
    
     targetSheet.Rows("7:1001").Delete
    
    ' 遍历所有工作表
    For Each sourceSheet In ThisWorkbook.Worksheets
        If sourceSheet.Name <> summarySheetName Then
            ' 找到目标工作表中的下一个空行
            lastRow = targetSheet.Cells(targetSheet.Rows.Count, "C").End(xlUp).Row
            
            ' 复制范围(A1:R4)
            sourceSheet.Range("E2:AO6").Copy
            
            ' 粘贴到摘要工作表中,紧接上一个工作表的数据后面
            targetSheet.Range("A" & lastRow + 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
            
            ' 清除剪贴板
            Application.CutCopyMode = False
        End If
    Next sourceSheet
    
    Range("A2:AK6").Select
    Selection.Copy
    Sheets("考核汇总").Select
    ActiveWindow.SmallScroll Down:=-3
    Range("A7:AK1001").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    
    
    
End Sub

二、汇总所有工作表指定区域内容到指定工作表(带公式)

Sub CopyMultipleSheetsToSingle()
    Dim ws As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim copyRange As Range
    
    ' 指定目标工作表
    Set targetSheet = ThisWorkbook.Worksheets("考核汇总") ' 修改为目标工作表名称
    
    targetSheet.Rows("2:1000").Delete
    
    ' 遍历工作簿中的所有工作表
    For Each ws In ThisWorkbook.Worksheets
        If ws.Index > 1 Then ' 跳过第一个工作表(假设第二个工作表是要开始复制的)
            Set copyRange = ws.Range("E2:AO6") ' 设置要复制的区域
            ' 找到目标工作表中下一个空的行
            lastRow = targetSheet.Cells(targetSheet.Rows.Count, copyRange.Column).End(xlUp).Row
            ' 将复制区域复制到目标工作表的下一个空行
            copyRange.Copy Destination:=targetSheet.Range("A" & lastRow + 1)
        End If
    Next ws
End Sub

附件:
https://download.csdn.net/download/qq_45365214/89865531


总结

分享:
负郭幽居一林清,残花寂寂水泠泠,夜深宴坐无灯火,卷土疏帘月满庭;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若竹之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值