当前位置: 首页 > article >正文

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

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、汇总所有工作表指定区域内容到指定工作表
  • 二、汇总所有工作表指定区域内容到指定工作表(带公式)
  • 总结


前言

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

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


总结

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


http://www.kler.cn/news/341467.html

相关文章:

  • 【可答疑】基于51单片机的PWM控制智能台灯设计(含仿真、代码、报告、演示视频等)
  • 分布式数据库:大数据时代的关键技术
  • 读论文、学习时 零碎知识点记录01
  • PViT-AIR:一种用于乳腺组织图像配准的深度学习模型|顶刊精析·24-10-10
  • 【大数据】数据分析之Spark框架介绍
  • nginx配置访问本地静态资源
  • 双十一精选好物有哪些?值得入手的五大产品
  • 神经网络激活函数汇总
  • 【d59】【Java】【力扣】146.LRU缓存
  • 输出平方矩阵
  • C++游戏开发指南
  • 利用Spring Boot的RestTemplate进行REST客户端开发
  • 字节豆包推出AI智能体耳机Ola Friend 售价1199元
  • JavaScript 数组简单学习
  • LeetCode 3162.优质数对的总数 I:暴力模拟
  • 光路科技TSN交换机:驱动自动驾驶技术革新,保障高精度实时数据传输
  • 【vue3】分页功能实现(nodejs)
  • 通用代码生成器应用场景七,初学者学习使用
  • mysql学习教程,从入门到精通,SQL窗口函数(38)
  • 【测试】用例篇——测试用例的概念