Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页
2019獨角獸企業重金招聘Python工程師標準>>>
我使用的Office為 Microsoft Office Professional Plus 2010,我使用的Excel 版本為14.0.4760.1000(32位)。
這段時間遇到了一件事,就是我需要給很多小伙伴打錢,但是每次打給的人又不一樣。每次都一遍遍地做一些重復工作,自然不是我的風格,所以我寫了下面這個VBA腳本執行我的工作:
1、建立一個Excel,第一個Sheet頁取名為“成員名冊”,里面一共有三列,第一列為成員名稱,第二列為打款方式,第三列為賬號
2、將一個新的Sheet頁命名為報銷單1,先填寫前兩列,第一列寫上成員名稱,第二列寫上打款金額
3
3、添加宏GenerateDoc,在Excel自帶的VisualBasic編輯器中輸入下面代碼
'從總名單中將對應信息填入新建的名單中 '約定各列內容: ' 1 - SheetNameList 成員名稱-匯款方式-賬號號碼(需全部填寫) ' 2 - SheetGenDoc 成員名稱-匯款金額-匯款方式(通過本Sub同步)-賬號號碼(通過本Sub同步)-是否匯訖(默認未匯) Sub GenerateDoc()Dim SheetNameList As WorksheetSet SheetNameList = Sheets("成員名冊") '成員名冊Sheet頁名Dim SheetGenDoc As WorksheetSet SheetGenDoc = Sheets("報銷單1") '待同步數據的報銷單的Sheet頁名,每次需要視情況填寫!'從總名單中找出當前名單中的成員的對應信息Dim IsFoundDim i, j As Integeri = 1Do While SheetGenDoc.Cells(i, 1).Text <> ""'MsgBox SheetGenDoc.Cells(i, 1).TextIsFound = Falsej = 1Do While SheetNameList.Cells(j, 1).Text <> ""'MsgBox SheetNameList.Cells(j, 1).TextIf SheetGenDoc.Cells(i, 1).Text = SheetNameList.Cells(j, 1).Text ThenSheetGenDoc.Cells(i, 3).FormulaR1C1 = SheetNameList.Cells(j, 2).TextSheetGenDoc.Cells(i, 4).FormulaR1C1 = SheetNameList.Cells(j, 3).TextSheetGenDoc.Cells(i, 5).FormulaR1C1 = "-"IsFound = TrueEnd Ifj = j + 1Loop'如成員未在總名單中找到,標記為未找到If Not IsFound ThenWith SheetGenDoc.Cells(i, 3).FormulaR1C1 = "未找到"'.Font.Color = -16776961 '文字加紅'.Font.TintAndShade = 0 '文字加紅End WithWith SheetGenDoc.Cells(i, 4).FormulaR1C1 = "未找到"'.Font.Color = -16776961 '文字加紅'.Font.TintAndShade = 0 '文字加紅End WithWith SheetGenDoc.Cells(i, 5).FormulaR1C1 = "-"'.Font.Color = -16776961 '文字加紅'.Font.TintAndShade = 0 '文字加紅End WithEnd Ifi = i + 1Loop'設置最后一列(第四列)為下拉選擇列,包括【-】和【匯訖】兩個選項SheetGenDoc.Columns("E:E").SelectWith Selection.Validation.Delete.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _xlBetween, Formula1:="-,匯訖".IgnoreBlank = True.InCellDropdown = True.InputTitle = "".ErrorTitle = "".InputMessage = "".ErrorMessage = "".IMEMode = xlIMEModeNoControl.ShowInput = True.ShowError = TrueEnd With'設置各列寬度和顏色With SheetGenDoc.Columns("A:A").ColumnWidth = 10.Columns("B:B").ColumnWidth = 10.Columns("C:C").ColumnWidth = 20.Columns("D:D").ColumnWidth = 20.Columns("E:E").ColumnWidth = 20.Columns("E:E").Font.Color = -16776961.Columns("E:E").Font.TintAndShade = 0End WithEnd Sub4、執行這個VBA宏后,C、D兩列會自動同步打款方式和賬號,E列會出現一個下拉選項,包括“-”(未打款)和“匯訖”(已打款)兩種選項
使用這個宏,好處是每次收到新名單時,可以很快地根據成員名冊的信息,把打款方式和賬號同步到一張新的Sheet頁,為操作提供了一些便利性。當然這個宏也可以在適當修改或擴展后用于其他一些類似的場合(比如發通知、發傳真等),它最主要的作用是減輕一些由人進行的手工操作的工作量,并減少人在進行這些工作時可能發生的錯誤。
友情提示:和錢有關的事情都不是小事,雖然VBA可以讓我們對Excel的處理變得傻瓜化,但在每次打款前還是要和收款人再次確認一下打款方式和賬號。
轉載于:https://my.oschina.net/Tsybius2014/blog/616946
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dom选择方法的区别
- 下一篇: saiku、mondrian前奏之——立