上篇文章說到什麼是Excel VBA,那麼你就會有疑問宏是如何應用到我們的Excel中呢?他真的是萬能的嗎?他具體可以做啥?其實可以這麼說,宏是我們通過Excel錄制進而得到VBA代碼,而我們有時候自己寫的代碼也稱之為VBA代碼。其實他們本質是相同的。
上篇文章:Excel 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
上面這個就可以自動識别區域大小,進行記錄操作。
我們看看修改後的代碼執行效果。
這個代碼其實也許開始學習的你還是有點疑惑,但是不要緊,我們會逐一開始和你介紹如何去學習和自己寫出來代碼。
是以在某些層面上說,錄制宏其實并不是萬能的,有些複雜的操作,通過錄制宏我們并不能得到我們所需要的代碼。我們在後期,并不推薦你用通過錄制宏來得到想要的代碼。