VBA—EXCEL操作集合—05

发布于:2022-12-14 ⋅ 阅读:(945) ⋅ 点赞:(0)

大家好,我在前几篇文章中介绍到了VBA的一些基础操作,今天我们用之前介绍的一些功能来做一个简单的小例子。

场景:某学校要根据学生本次期末考试的总成绩评定出”一等奖、二等奖、三等奖“,并授予其奖状以资奖励。

如上图所示,这个是学生本次期末考试的成绩数据表。

下面的截图,是需要打印的奖状的模板。

我们先来看代码。代码中用到了这样几个功能。

1、如何正确获取到最大行号(最后一行有数据的行所在的行号)

2、VBA给指定单元格赋值

3、VBA设置指定单元格字体的大小

4、打印指定Sheet

其中前3个,我在之前的文章中都讲过了,这里就不再重复讲解了。

打印指定Sheet所用的方法是:Sheet对象.PrintOut

Function getEndRowNumber(wk)
    Dim num_down
    num_down = wk.Range("A1").End(xlDown).Row
    getEndRowNumber = num_down
End Function

Sub batchPrintTemplate()
    Dim srcWk, descWk As Worksheet
    Dim end_num, i, total_num, str_label, prize_content
    
    Set srcWk = ThisWorkbook.Worksheets("数据")
    Set descWk = ThisWorkbook.Worksheets("奖状模板")
    
    
    end_num = getEndRowNumber(srcWk)
    
    For i = 2 To end_num
        total_num = srcWk.Range("B" & i).Value + srcWk.Range("C" & i).Value + srcWk.Range("D" & i).Value
        If total_num >= 280 Then
            str_label = "一等奖"
        ElseIf total_num >= 270 Then
            str_label = "二等奖"
        ElseIf total_num >= 240 Then
            str_label = "三等奖"
        Else
            str_label = ""
        End If
        
        If Len(str_label) > 0 Then
            prize_content = "恭喜 " & srcWk.Range("A" & i).Value & "  同学" & vbCrLf
            prize_content = prize_content & "在 2022年度 期末考试中" & vbCrLf
            prize_content = prize_content & "获得  三等奖"
            
            descWk.Range("A11").Value = prize_content
            descWk.Range("A11").Font.Size = 22
            descWk.PrintOut
        End If
    Next i
End Sub

 代码中,我把1,2,3等奖的总成绩设置为>=280,270--279,240--269.

我们定义变量total_num用来保存B,C,D列3门课程的总成绩。

然后再根据total_num来进行判断能够获得几等奖。如果总成绩不够240的,是不打印奖状的。

这里我们通过 For i=2 to end_num来对所有学生数据进行循环处理。

descWk.PrintOut是把”奖状模板“这个Sheet送到打印机去打印。

关于奖状模板在进行设计的时候,有一个小技巧跟大家共享一下。

我们通过EXCEL设置Sheet的背景的时候,如果图片过小,会被重复显示。如下图所示:

 那如何才能隐藏其他不需要的呢?我们可以利用EXCEL的背景填充功能来实现。

首先我们把Sheet的整个Sheet的背景色填充为白色,然后再将需要打印部分,也就是一个奖状的位置的背景色填充为无颜色,这样就可以很好的隐藏其余部分了。

好了,今天就跟大家分享到这。如果有想下载这个demo的,可以去下载中心下载。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到