Excel VBA選取範圍:2種自動調整表格的用法

Excel VBA選取範圍有許多相關的用法,本文介紹如何利用它的特性設計程式﹐2種方法確認欄與列,讓Excel表格依照資料更新,避免舊版本不會自動調整的狀況。

一、報表資料範圍

贊贊小屋因為工作關係會同時使用多台電腦和不同的Excel版本,大部分在操作Excel表格的時候,如同截圖所示,特定範圍已經建立好了Excel表格,在最右側欄位右邊的下一個儲存格輸入資料,正常的話會自動延伸表格範圍。

正常的意思是總有例外。

依照贊贊小屋經驗,也許是版本緣故,在特定電腦操作並不會自動更新範圍,必須在上方功能區「表格設計」中的「內容>調整表格大小」去手動增加兩個欄位。

一、報表資料範圍

二、表格與Cells語法

上個步驟所介紹的狀況,雖然在Excel操作不算複雜,但每次都要調整也是有點麻煩,況且如果是VBA專案開發的話,目標就是要全自動,因此這部分也希望可以用程式方式執行。

首先從物件對象結構而言,表格是位於某個工作表上面,而工作表這個對象在Excel跟VBA是分別有不同名稱,文章的活頁簿範例只有一個Excel工作表,它在VBA裡面的名稱是「工作表8」,程式可以直接使用這個名稱指定此工作表,類似像Excel手動選取的操作。然後在工作表上可能有很多表格,因此這裡的「With 工作表8.ListObjects(1)」意思是特定工作表上的第1個表格對象。

選定好了表格之後,表格一定是工作表上某個範圍,而範圍裡面會有很多的儲存格,這裡的「Cells(1)」代表是左上角開始起算的第一個儲存格,接著使用到了前往資料範圍最右邊前往的語法:「End(xlToRight)」,最後再選取(「Select」)目前的儲存格。

二、表格與Cells語法

三、點選右移操作

上個步驟程式代碼的執行作用,等同於在資料範圍內的第1個儲存格使用Excel快捷鍵,按住Ctrl鍵,然後再按方向右鍵,就可以往右跳到範圍最右邊點選資料。因此在Excel目前儲存格為G3的情況下,執行上個步驟的程序,它就會跳到I3,如此會比較瞭解程式的作用。

三、點選右移操作

四、目前儲存格位置

之所以要將目前Excel儲存格移到資料範圍的最右邊,目的是文章一開始提到的想要調整表格大小,而Excel表格大小是由欄跟列所決定的,在這裡使用「ActiveCell.Column」表示是目前儲存格位置的欄數,得到資料表最右邊的欄數,也就是第9欄(I欄)。

四、目前儲存格位置

五、Range變數用法

前面提到資料範圍是由欄跟列所決定的,先前步驟是直接將儲存格移到最右邊,由此確定欄的部分。另外還有個方法是計算到底有多少例,也就是這裡所看到的兩個語句,它用到了VBA Range物件,一個是直接列印出來有多少列,另外一個是先設定變數,然後再把這個變數列印出來。

Debug.Print 工作表8.ListObjects(1).Range.Rows.Count

R = 工作表8.ListObjects(1).Range.Rows.Count

跟先前移動儲存格的方法比較起來,這裡的計算方式比較合乎直覺,通常是想要知道一個報表到底有多少筆資料,在Excel就是有多少列的概念。

五、Range變數用法

六、Excel VBA選取範圍

確定了資料範圍的欄列,想要調整更新表格範圍是一件水到渠成的事情。以程式而言,只要瞭解相關語法就可以進行設置。

調整表格範圍的方式是會用到VBA Resize命令,常常在設計Excel程式的話對此應該不陌生,很多時候單純要調整儲存格範圍就是用到了這個命令。

六、Excel VBA選取範圍

七、實際測試程式

好不容易設計好了程式,當然會想要測試看看,果然在Excel執行之後,表格自動依照資料狀況調整範圍。

七、實際測試程式

2種一定要學會的用法

這篇文章介紹了兩種方式確定資料範圍的狀況,雖然欄和列是分別使用這兩種不同方法,但可以想見這兩個方法其實都是可以互相使用的。另外一開始提到在正常比較新的Excel版本,正常毋須設計程式也會自動調整表格範圍,不一定需要這篇文章所介紹的程式。不過範例程式可說是儲存格和表格對象的基本語法,很值得學習熟悉,況且確定範圍是在處理報表資料的時候一定會用到的操作,因此本篇VBA教學文章應該是有蠻廣泛的實際應用。

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

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

最新文章: