Excel中的VBA宏:每次劃款前從總名冊中同步用戶數據到當前頁

我使用的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

相關文章
相關標籤/搜索