相信學過OFFSET工作表函數的人對這個印象比較深刻,它可是函數中高手必備函數之一。在VBA中,他也同樣大展身手。下面我們來看看他的用法吧。它一共就兩參數:
Offset(行偏移,列偏移)
使用起來很簡單,可使用單個單元格的偏移,如:
Range("A1").Offset(1,0)
表示的是A1單元格偏移一行的單元格A2,也可採用多個單元格的區域偏移,如:
Range("A1:A3").Offset(0,2)
表示的是A1:A3區域偏移兩列也就是C1:C3單元格。是不是理解起來很簡單?下面我們看看動圖,給他們賦值:
Offset理解起來很簡單,他可以用在很多地方,如我在循環遍歷A列單元格的時候,想返回其他列的值,在找到最後一個有內容的單元格的時候,我需要在下一個單元格寫入內容,這個時候就可以考慮用Offset偏移屬性來做。
在Excel函數中,Offset是有5個參數的,第1個是基準單元格,2和3分別是行偏移和列偏移,4和5是擴展區域,那麼在VBA中Offset為什麼沒有擴展區域呢?其實是有的,不過他做成了一個單獨的屬性。下面我們來看下一個屬性。
Resize屬性用於獲取區域,如我現在引用的只是一個單元格,但是我需要返回A1:F2,2行6列的數據。可採用如下方式:
Range("A1").Resize(2,6)
如我想要把A1:F6單元格的數據複製到A6:F7區域,可使用如下語句:
Range("A1").Resize(2, 6).Copy Range("A6")
Resize與Offset屬性組合起來相當於函數中的Offset,但是將他們拆開之後將變得更加靈活。下面我們來介紹一種不找到最後一個單元格,也不用Resize屬性也能返回區域的一個屬性
CurrentRegion 當前區域
CurrentRegion屬性表示當前選中單元格所在的區域,怎麼界定是當前的區域呢,就是數據區域的上下左右都是空格的最大矩形區域。
如圖,在A1:F2區域周圍有空格,那麼我們要表示A1:F2區域也可用如下方式:
range("A1").CurrentRegion
表示A4:F5可用如下方式:
range("A4").CurrentRegion
當前區域周圍一定都是空值
如動圖,我將A1當前區域的值複製到A12單元格:
使用CurrentRegion屬性,我們不找到最後一個單元格也能把區域數據引用出來,對於規範的數據來說,這個屬性是很方便的。
關於單元格與區域的引用方面的屬性就介紹到這裡啦,下一節,我們繼續講解關於Range對象的常用方法與屬性,敬請關注。