每天資訊Excel VBA 不可一世的錄製宏,是否真的是萬能的

菜單

Excel VBA 不可一世的錄製宏,是否真的是萬能的

上篇文章說到什麼是Excel VBA,那麼你就會有疑問宏是如何應用到我們的Excel中呢?他真的是萬能的嗎?他具體可以做啥?其實可以這麼說,宏是我們透過Excel錄製從而得到VBA程式碼,而我們有時候自己寫的程式碼也稱之為VBA程式碼。其實他們本質是相同的。

我們先看Excel的宏可以在Excel中做什麼事情?如下圖有某個公司的出庫報表。

每天出貨的編碼,品名,數量,單價,這些需要我們自己手動錄入Excel中,當我們完成了這個單據,需要把他儲存到我們的記錄Sheets中。

我們一般手動操作是複製A2:F6單元格區域,點選COPY,然後啟用記錄工作表,點選A2單元格,進行貼上,完成這個動作。

Excel VBA 不可一世的錄製宏,是否真的是萬能的

那麼我們如果我們一天有幾百個這個的出庫報表,您是否需要這樣重複操作一百遍?這樣的工作效率是不是很低?

這個時候我們就可以用VBA程式碼來實現這個功能。我們先看看動畫是怎麼通過錄制宏得到程式碼的吧!

Excel VBA 不可一世的錄製宏,是否真的是萬能的

看到上面的操作,是不是感覺原來需要我們自己手動進行操作的,現在只要點選按鍵,就可以自動的執行,是不是感覺是如此之簡單的?

我們先一起看看通過錄製得到的宏程式碼。

Excel VBA 不可一世的錄製宏,是否真的是萬能的

如下是我們自己手動自己寫的程式碼,是不是發現我們通過錄製得到的程式碼十分繁瑣,多了很多無用的程式碼,通過錄制的宏程式碼的執行效率也是非常低的。因此我們一般是通過錄制宏,得到相應程式碼是使用方法和功能性程式碼,並不是我們都能記得起來所有的程式碼,有時候也需要通過錄制宏間接的得到我們所需的程式碼。

Excel 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 VBA 不可一世的錄製宏,是否真的是萬能的

我們看看修改後的程式碼執行效果。

Excel VBA 不可一世的錄製宏,是否真的是萬能的

這個程式碼其實也許開始學習的你還是有點疑惑,但是不要緊,我們會逐一開始和你介紹如何去學習和自己寫出來程式碼。

所以在某些層面上說,;錄製宏其實並不是萬能的,有些複雜的操作,通過錄制宏我們並不能得到我們所需要的程式碼。我們在後期,並不推薦你用通過錄制宏來得到想要的程式碼。

我是Excel教案,關注我持續分享更多的Excel技巧