- Excel中宏的使用
- 錄制宏的工具在哪里
- 錄制並執行宏 使用按鈕
- 錄制宏時,若先點錄制,再選單元格,會導致錄制代碼鎖死該單元格(絕對引用);先選定單元格,再在點錄制后點“使用相對引用”,再選單元格,錄制的就是對與原單元格相對位置的單元格的操作,這就是相對引用:並不鎖死某單元格,而是與原單元格的一定位置的偏移。
- 使用“DEMO-2-錄制相對引用的宏”,可利用相對引用,將所有周一(或任意周幾)的單元格塗色。
- 錄制的宏在哪里?看vba環境,初步認識宏代碼。理解sub過程的基本語法規則。將錄制的宏復制出來,理解宏代碼的作用。
- 但上述過程如果要重復做數十次,意味着點數十次宏,也很麻煩。理解for循環,以及定義數據類型。
- 宏工具制作工資條:文件“DEMO-2-錄制相對引用的宏”的data表,需將表頭插入每一條記錄上方。
- 思考:將表頭復制后,每隔2行粘貼,重復若干次,可否復制成宏后自動完成?
- 操作:選中表頭-->錄制宏-->使用相對引用-->插入復制的單元格-->停止錄制,嘗試運行宏。
- 進一步簡化:使用for循環,考慮循環次數(記錄條數-1)
- 優化:考慮若不小心未將鼠標放在表頭上,執行了宏,將出現不符預期的結果。因此,應考慮讓宏運行時,無論鼠標在哪里,都默認先選中表頭行。錄制選中表頭行的宏。
思考:新錄制的代碼放在原代碼的什么位置? - 進一步優化:添加按鈕運行宏,觀察效果。設置控件格式-->屬性-->大小、位置均固定
- 補充:宏安全性要設置為啟用。
- 練習題
嘗試制作一個按鈕,使得剛剛生成的工資條狀態回復其原始狀態。
- Range單元格對象
- 引入range單元格對象,可回避相對引用的問題。了解如何通過range表達式對某單元格賦值;
- 若想對a1-a100單元格全賦值為1怎么辦?用for循環,但其中的變量 i 需注意range("a"&i)的寫法,可用工作表界面&的作用類比;
- 進一步地,引入用表達式賦值;
- 以上一節給每周一塗色為例,用range+for循環回避相對引用的問題,理解for循環中的step設置;
- If 邏輯判斷--過程控制
- 文件“DEMO-1-認識IF函數”,例1,在某一個單元格中,根據性別返回不同的稱呼,理解在工作表界面寫if···else函數和在vba中寫if函數的異同;
- 將一列全用if轉換,用for循環,進一步理解變量i在range中的使用;
- 在for循環中增加根據專業類填充專業代碼的if語句,理解多種可能時使用elseif語句及對代碼進行注釋的方法;
- 將姓名為空的記錄刪除,用宏錄制方式獲得刪除記錄的代碼,觀察結果;
- 分析有些行沒被刪除的原因,思考如何解決?強調注意刪除行時的陷阱;
- 解決方案較多,理解step -1的概念;
- 用If退出for循環
- 文件“DEMO-1-認識IF函數”,例2,改寫上節的生成工資條宏,循環操作的每一步都選表頭,並粘貼到奇數列(先選該列第一個單元格),錄制一
次的宏再用for,計算循環多少次; - 計算次數很麻煩,怎么回避?考慮用if終止for循環(exit for),觀察循環結束的條件(插入到空行)。注意思考if語句的位置。
- 同理做回復工資表的宏。(可作為練習)
- 文件“DEMO-2-(作業)新個稅計算公式”,演示if (加and的條件)的寫法,可不演示完。
需要理解並記住寫法的概念:
(1)Sub ABC()……End Sub
(2)Dim i as integer
For i= 1 to 10……Next
需要理解的概念:
什么是宏?什么是VBA?錄制宏時的相對引用是什么意思?什么是變量?
要點:選中第3行,觀察刪除時的表格變化情況,刪除第3行,接着刪第4行······共刪除?次。進行錄制