回覆列表
  • 1 # Excel學習世界

    這是VBA 的經典案例:自動製作工資條。

    這也是一個非常實用的案例,掌握了思路,在很多類似場景都能應用,比如隔行插入空行等等。

    案例:

    以下是原始的工作表,要做成工資條,需要隔行插入表頭,列印後剪下來。

    如何能點一下按鍵就自動插入所有表頭?像圖二那樣?

    解決方案:

    我們剛開始教 VBA 的時候說過,初學者可以先錄製宏,再按需求修改 VBA 程式碼,快速完成程式開發,今天就用這個思路。

    3. 選中表頭行 -->複製-->將滑鼠移至需要插入表頭的行-->右鍵單擊“插入複製的單元格”

    4. 停止錄製宏

    6. 在彈出的指定宏視窗中選擇我們剛才建立的“工資條”宏 --> 單擊“確定”

    10. 在開啟的 VBE 程式碼窗口裡,就可以看到剛才錄製的宏程式碼

    我給每一句程式碼後面加入了註釋VBA 的註釋是以 " 開頭,顏色為綠色程式碼非常簡單,就是剛才錄製的每一步動作的語言描述

    Sub 工資條()

    "

    " 工資條 Macro

    "

    Rows("4:4").Select "選中第四行

    Selection.Copy "複製所選區域

    Rows("6:6").Select "選中第六行

    Selection.Insert Shift:=xlDown "插入複製的區域

    End Sub

    11. 我們曾經說過,錄製宏只能實現一個動作,無法迴圈呼叫。

    12. 在程式碼中加入部分修改,就完成了

    Dim i As Long:宣告變數 i,型別為 Long其實以本例的資料量來說,定義為 Integer 也足夠了變數的宣告我們下次會細說For i = 6 To 200 Step 2:i 從 6 開始,到 200 結束,步長為 2因為我們第一次要在第 6 行插入,所以從 6 開始表格總共 100 行不到,隔行插入表頭後,行數會翻倍,所以總數定為 200步長 2 相當於 i=i+2,即隔行執行Rows(i).Select:括號裡改用變數 i,即每次選擇第 i 行配合 for 語句實現迴圈效果

    Sub 工資條()

    "

    " 工資條 Macro

    "

    Dim i As Long

    For i = 6 To 200 Step 2

    Rows("4:4").Select "選中第四行

    Selection.Copy "複製所選區域

    Rows(i).Select

    Selection.Insert Shift:=xlDown "插入複製的區域

    Next

    End Sub

  • 中秋節和大豐收的關聯?
  • 銀行第一季度工作總結開頭怎麼寫?