VBA—EXCEL操作集合—05
大家好,我在前幾篇文章中介紹到了VBA的一些基礎操作,今天我們用之前介紹的一些功能來做一個簡單的小例子。
場景:某學校要根據學生本次期末考試的總成績評定出”一等獎、二等獎、三等獎“,并授予其獎狀以資獎勵。
如上圖所示,這個是學生本次期末考試的成績數據表。
下面的截圖,是需要打印的獎狀的模板。
我們先來看代碼。代碼中用到了這樣幾個功能。
1、如何正確獲取到最大行號(最后一行有數據的行所在的行號)
2、VBA給指定單元格賦值
3、VBA設置指定單元格字體的大小
4、打印指定Sheet
其中前3個,我在之前的文章中都講過了,這里就不再重復講解了。
打印指定Sheet所用的方法是:Sheet對象.PrintOut
Function getEndRowNumber(wk)Dim num_downnum_down = wk.Range("A1").End(xlDown).RowgetEndRowNumber = num_down End FunctionSub batchPrintTemplate()Dim srcWk, descWk As WorksheetDim end_num, i, total_num, str_label, prize_contentSet srcWk = ThisWorkbook.Worksheets("數據")Set descWk = ThisWorkbook.Worksheets("獎狀模板")end_num = getEndRowNumber(srcWk)For i = 2 To end_numtotal_num = srcWk.Range("B" & i).Value + srcWk.Range("C" & i).Value + srcWk.Range("D" & i).ValueIf total_num >= 280 Thenstr_label = "一等獎"ElseIf total_num >= 270 Thenstr_label = "二等獎"ElseIf total_num >= 240 Thenstr_label = "三等獎"Elsestr_label = ""End IfIf Len(str_label) > 0 Thenprize_content = "恭喜 " & srcWk.Range("A" & i).Value & " 同學" & vbCrLfprize_content = prize_content & "在 2022年度 期末考試中" & vbCrLfprize_content = prize_content & "獲得 三等獎"descWk.Range("A11").Value = prize_contentdescWk.Range("A11").Font.Size = 22descWk.PrintOutEnd IfNext 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的,可以去下載中心下載。
總結
以上是生活随笔為你收集整理的VBA—EXCEL操作集合—05的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英文文献下载神器—Scihub
- 下一篇: windows 覆盖图标实现