上篇文章說到什麼是Excel VBA,那麼你就會有疑問宏是如何應用到我們的Excel中呢?他真的是萬能的嗎?他具體可以做啥?其實可以這麼說,宏是我們透過Excel錄製從而得到VBA程式碼,而我們有時候自己寫的程式碼也稱之為VBA程式碼。其實他們本質是相同的。
我們先看Excel的宏可以在Excel中做什麼事情?如下圖有某個公司的出庫報表。
每天出貨的編碼,品名,數量,單價,這些需要我們自己手動錄入Excel中,當我們完成了這個單據,需要把他儲存到我們的記錄Sheets中。
我們一般手動操作是複製A2:F6單元格區域,點選COPY,然後啟用記錄工作表,點選A2單元格,進行貼上,完成這個動作。
那麼我們如果我們一天有幾百個這個的出庫報表,您是否需要這樣重複操作一百遍?這樣的工作效率是不是很低?
這個時候我們就可以用VBA程式碼來實現這個功能。我們先看看動畫是怎麼通過錄制宏得到程式碼的吧!
看到上面的操作,是不是感覺原來需要我們自己手動進行操作的,現在只要點選按鍵,就可以自動的執行,是不是感覺是如此之簡單的?
我們先一起看看通過錄製得到的宏程式碼。
如下是我們自己手動自己寫的程式碼,是不是發現我們通過錄製得到的程式碼十分繁瑣,多了很多無用的程式碼,通過錄制的宏程式碼的執行效率也是非常低的。因此我們一般是通過錄制宏,得到相應程式碼是使用方法和功能性程式碼,並不是我們都能記得起來所有的程式碼,有時候也需要通過錄制宏間接的得到我們所需的程式碼。
這句程式碼的意思是複製A2:F6單元格區域,就相當於我們自己手動進行復制操作。
Range(“A2:F6”)。Copy
這句程式碼的意思是,把我們剛剛複製的內容,貼上到我們需要存放的工作表中。
Sheets(“記錄”)。Range(“A2”)。PasteSpecial
或者你想說,如果每次複製單元格區域大小是改變的,這個時候程式碼應該如何去寫,我們只需要把上面的程式碼稍作修改即可:
Range(“A2:F” & Cells(Rows。Count, 1)。End(3)。Row)。Copy
Sheets(“記錄”)。Range(“A” & Sheets(“記錄”)。Cells(Rows。Count, 1)。End(3)。Row + 1)。PasteSpecial
上面這個就可以自動識別區域大小,進行記錄操作。
我們看看修改後的程式碼執行效果。
這個程式碼其實也許開始學習的你還是有點疑惑,但是不要緊,我們會逐一開始和你介紹如何去學習和自己寫出來程式碼。
所以在某些層面上說,;錄製宏其實並不是萬能的,有些複雜的操作,通過錄制宏我們並不能得到我們所需要的程式碼。我們在後期,並不推薦你用通過錄制宏來得到想要的程式碼。
我是Excel教案,關注我持續分享更多的Excel技巧