VBA EXCEL 工作簿之间相互操作

7 篇文章 0 订阅

说明:

  1. 各个班级花名册excel工作簿,一个余额汇总工作簿,在余额汇总工作簿中有多个表,每个表代表一个班级中每个学生基本信息和余额情况;
  2. 为了检测班级花名册中的所有学生在余额统计表中是否都有对应的基本信息和余额统计情况,即班级花名册中的所有学生是否在余额统计表中都存在;
  3. 班级花名册工作簿文件列表:
  4. 余额信息统计工作簿:
  5. 源代码:
    '联表对比设置单元格样式
    Function CheckAndAddStyle()
       
       '遍历工作表,逐个班级进行检车
       Dim sheetToWorkBookName As String
       Dim nameIndexInBJ As Integer '班级花名册中学生姓名所在列
       For Each sheet In ThisWorkbook.Sheets '获取该工作簿中所有表
            '寻找班级工作簿
            sheetToWorkBookName = CStr(2014) + Left(sheet.Name, 2) + ".xls"
            Dim myApp As New Application
            Dim sh As Worksheet
            Dim Temp As String
            Temp = ThisWorkbook.Path & "\" & sheetToWorkBookName
            myApp.Visible = False
            Set sh = myApp.Workbooks.Open(Temp).Sheets(1)
            '获取班级姓名所在列
            nameIndexInBJ = GetNameIndex(sh)
            '从sh工作表的第二行开始逐渐检索姓名
            'sheet为余额汇总表,sh 为班级花名册表
            
            For bjRow = 2 To sh.UsedRange.Rows.Count
                Dim yeRow As Integer
                For yeRow = 5 To sheet.UsedRange.Rows.Count
                    If sh.Cells(bjRow, nameIndexInBJ).Value = sheet.Cells(yeRow, 1) Then
                        sh.Cells(bjRow, nameIndexInBJ).Interior.ColorIndex = 42 ' 存在则在班级花名册中姓名单元格设置为绿色
                        Exit For
                    End If
                Next
                '没有找到,在班级花名册中作上记号
                If yeRow = sheet.UsedRange.Rows.Count + 1 Then
                    sh.Cells(bjRow, nameIndexInBJ).Interior.ColorIndex = 46 '设置单元格格式,46是excel颜色代码表示红色
                End If
            Next
            
            myApp.Quit
            Set sh = Nothing
            Set myApp = Nothing
       Next
    End Function
    
    '获取姓名所在列
    Function GetNameIndex(sheet As Worksheet) As Integer
       Dim nameIndex As Integer
       For i = 1 To sheet.UsedRange.Columns.Count
            If sheet.Cells(1, i).Value = "姓名" Then
                nameIndex = i
                'MsgBox CStr(nameIndex) + "  " + sheet.Cells(1, i).Value
                Exit For
            End If
       Next
        GetNameIndex = nameIndex '返回值
    End Function
    

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值