我使用的Office爲 Microsoft Office Professional Plus 2010,我使用的Excel 版本爲14.0.4760.1000(32位)。編輯器
這段時間遇到了一件事,就是我須要給不少小夥伴打錢,可是每次打給的人又不同。每次都一遍遍地作一些重複工做,天然不是個人風格,因此我寫了下面這個VBA腳本執行個人工做:oop
一、創建一個Excel,第一個Sheet頁取名爲「成員名冊」,裏面一共有三列,第一列爲成員名稱,第二列爲打款方式,第三列爲帳號code
二、將一個新的Sheet頁命名爲報銷單1,先填寫前兩列,第一列寫上成員名稱,第二列寫上打款金額orm
3ip
三、添加宏GenerateDoc,在Excel自帶的VisualBasic編輯器中輸入下面代碼pdo
'從總名單中將對應信息填入新建的名單中 '約定各列內容: ' 1 - SheetNameList 成員名稱-匯款方式-帳號號碼(需所有填寫) ' 2 - SheetGenDoc 成員名稱-匯款金額-匯款方式(經過本Sub同步)-帳號號碼(經過本Sub同步)-是否匯訖(默認未匯) Sub GenerateDoc() Dim SheetNameList As Worksheet Set SheetNameList = Sheets("成員名冊") '成員名冊Sheet頁名 Dim SheetGenDoc As Worksheet Set SheetGenDoc = Sheets("報銷單1") '待同步數據的報銷單的Sheet頁名,每次須要視狀況填寫! '從總名單中找出當前名單中的成員的對應信息 Dim IsFound Dim i, j As Integer i = 1 Do While SheetGenDoc.Cells(i, 1).Text <> "" 'MsgBox SheetGenDoc.Cells(i, 1).Text IsFound = False j = 1 Do While SheetNameList.Cells(j, 1).Text <> "" 'MsgBox SheetNameList.Cells(j, 1).Text If SheetGenDoc.Cells(i, 1).Text = SheetNameList.Cells(j, 1).Text Then SheetGenDoc.Cells(i, 3).FormulaR1C1 = SheetNameList.Cells(j, 2).Text SheetGenDoc.Cells(i, 4).FormulaR1C1 = SheetNameList.Cells(j, 3).Text SheetGenDoc.Cells(i, 5).FormulaR1C1 = "-" IsFound = True End If j = j + 1 Loop '如成員未在總名單中找到,標記爲未找到 If Not IsFound Then With SheetGenDoc.Cells(i, 3) .FormulaR1C1 = "未找到" '.Font.Color = -16776961 '文字加紅 '.Font.TintAndShade = 0 '文字加紅 End With With SheetGenDoc.Cells(i, 4) .FormulaR1C1 = "未找到" '.Font.Color = -16776961 '文字加紅 '.Font.TintAndShade = 0 '文字加紅 End With With SheetGenDoc.Cells(i, 5) .FormulaR1C1 = "-" '.Font.Color = -16776961 '文字加紅 '.Font.TintAndShade = 0 '文字加紅 End With End If i = i + 1 Loop '設置最後一列(第四列)爲下拉選擇列,包括【-】和【匯訖】兩個選項 SheetGenDoc.Columns("E:E").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="-,匯訖" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End 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 = 0 End With End Sub
四、執行這個VBA宏後,C、D兩列會自動同步打款方式和帳號,E列會出現一個下拉選項,包括「-」(未打款)和「匯訖」(已打款)兩種選項同步
使用這個宏,好處是每次收到新名單時,能夠很快地根據成員名冊的信息,把打款方式和帳號同步到一張新的Sheet頁,爲操做提供了一些便利性。固然這個宏也能夠在適當修改或擴展後用於其餘一些相似的場合(好比發通知、發傳真等),它最主要的做用是減輕一些由人進行的手工操做的工做量,並減小人在進行這些工做時可能發生的錯誤。it
友情提示:和錢有關的事情都不是小事,雖然VBA可讓咱們對Excel的處理變得傻瓜化,但在每次打款前仍是要和收款人再次確認一下打款方式和帳號。io