VBA UsedRange:判斷儲存格是否有值的1個用法

VBA UsedRange是Excel程式開發的常用語法,它會自動選取目前工作表的使用範圍,本文介紹1個經典用法,如何判斷儲存格是否有值,進而依照規則快速刪除空白列。

稍具規模的公司,應該都已經導入ERP系統,會計人例行工作所需要的資料,全都由系統撈報表出來。系統報表會有個問題,預設格式是準備列印使用的,可能有許多空行,但往往,我們所需要的只是明細資料,那些空行非但達不到列印美觀的效果,反而是造成處理上的不方便。因此實務上,每下一次系統報表,必須得再刪一次空行,每次這樣「再來一次」也是挺煩的,在此介紹如何以VBA批次刪除空行:

一、系統報表多餘空白列

系統跑出來的應付帳款明細,有小計加總的空行、也有翻頁保留的空行,這樣的報表並不方便操作Excel。

系統跑出來的應付帳款明細

二、VBA UsedRange程式

組合鍵「Alt+F11」快速進入VBA,輸入如下程式,白話翻譯每句代碼:選取「系統報表」工作表的使用範圍,對於所選取範圍的儲存格格式,背景填滿黃色。

組合鍵「Alt+F11」快速進入VBA

三、Excel快速鍵檢視巨集

組合鍵「Alt+F8」快速叫出巨集,「執行」命名為「使用範圍標黃色」的巨集。

組合鍵「Alt+F8」快速叫出巨集

四、UsedRange執行測試

結果如圖所示,這樣應該很容易理解「UsedRange」的意思。

這樣應該很容易理解「UsedRange」的意思

五、UsedRange計算列數

輸入第二段程式,白話翻譯每句代碼:定義一個整數值的變數「r」,計算出目前工作表使用範圍的總列數,把這個等同於「r」,然後在儲存格「I1」呈現出「r」值。

定義一個整數值的變數「r」

六、再次執行巨集測試程式

再度組合鍵「Alt+F8」快速叫出巨集,「執行」剛才的新增程序「使用範圍列數」。

再度組合鍵「Alt+F8」快速叫出巨集

七、Excel寫入報表資料列數

果真於「I1」出現了「16」,有興趣可以數看看標黃色是否真的是16列,或者因為資料第一列開始,直接看最左邊的列數欄即可。

有興趣可以數看看標黃色是否真的是16列

八、VBA判斷儲存格是否有值

輸入第三段程式,白話翻譯每句代碼:變數「i」以降冪方式從16列到1列,如果第「1」欄第「i」是空白(””),那麼刪除此「i」列,結束「If」,回去跑下一個「i」循環,結束程序。

變數「i」以降冪方式從16列到1列

九、準備執行程式刪除空行

再度呼叫巨集:「開發人員」、「巨集」,可以看到目前有三組程序巨集了,「執行」剛才的新增程序「刪除空白列」。

「開發人員」、「巨集」

十、報表自動化去除空白

結果很漂亮,一點也不馬虎!

已刪除空白列

ActiveSheet指定工作表與Dim變數

關於這篇文章的程式碼,有些需要補充的。第一段的「Worksheets(”系統報表”)」,是指定某個確定的工作表語法,也就是直接將工作表頁籤寫上,但是到了第二段,寫法是:「ActiveSheet」,表示是目前操作中的工作表,兩種語法都正確,但是用法不同,以會計實務來說,顯然「ActiveSheet」是比較方便的。第二段還有個「Dim r As Integer」,這是指定變數的類型,和正負幾位小數相比,整數所佔空間當然小了許多,所以雖然這裡不指定也不會造成錯誤,但還是應該要養成定義適當變數類型的習慣。第三段之所以選擇降冪方式,有刪除一整行的讀者,應該都知道Exel會往上遞補,箇中玄機便在於此。

摸熟了這篇文章,應能體會如果只是要刪除空行,毋須這麼複雜,這裡特地寫了三段程式,是想利用此範例順帶介紹VBA程式碼的優質寫法,留待下節進一步分享。


贊贊小屋VBA教學中心:

Excel巨集錄製教學Excel巨集程式VBA編輯器VBA自學入門VBA基礎語法VBA基本應用VBA UserFormVBA VLOOKUP

取得範例程式請前往VBA社團,訂閱請加入VBA Line社群

VBA課程推薦:零基礎入門進階的20小時完整內容

VBA課程:20小時完整入門進階,職場及投資應用

最新文章: