tft每日頭條

 > 生活

 > vba excel單元格設置

vba excel單元格設置

生活 更新时间:2025-01-07 10:03:28

VBA裡的“對象”這個概念,我也不是很明白。就我的簡單理解:VBA中常用對象:工作簿、工作表、單元格就這三種;再就是在代碼中用SET賦值的 Set ** = CreateObject(**) ;CreateObject創建對象的意思,Set 後面的**就是對象,稱為對象變量。“對象”的賦值必須用SET。為了加深理解标題寫成單元格“對象”的屬性,因為是“對象”才能有屬性,不同類别的“對象”,屬性不同。

語法:對象.屬性(參數)。本節主要講解 單元格的End屬性,End屬性返回當前單元格所在連續區域邊界處的單元格。對連續區域簡單解釋:從選定單元格開始向相鄰單元格擴展,隻要單元格裡的值不為“空”,則都是連續區域。(等同于在選定單元格按CTRL鍵 方向鍵(上下左右)得到的單元格)

語法表達形式:Range().End (參數);參數有4個值:向左 xlToLeft 數字簡寫 1,向右 xlToRight 數字簡寫 2,向上 xlUp 數字簡寫 3,向下 xlDown 數字簡寫4。End屬性返回的是單元格對象,而不是單元格的值或是行、列的序号。如圖:

vba excel單元格設置(ExcelVBA學習筆記二)1

圖例中還跟上了個address屬性,得到單元格的地址。A1最下邊的是A7,最右邊的是C1(見圖中“本地窗口”中的值。

下面圖例,不接任何屬性看能得到什麼:

vba excel單元格設置(ExcelVBA學習筆記二)2

可以看出不帶屬性得到的是單元格裡的值。等同于Range(“a1”).End(xldown).Value。其實大多數情況下,單元格後不接屬性,默認就是.Value,返回單元格的值。(但是在寫本文時,我發現過n得到的值是7,也就是最下邊A7單元格的行号。看來,省略“.屬性”的代碼寫法是很不靠譜的。)

End屬性通常的作用是用來找指定單元格的連續區域數據的邊界;就是得到邊界上單元格的行号和列号。通常使用如下語句:Range(“A1”).End(xldown).Row 或 Range(“A1”).End(xltoright).Column。如下圖:

vba excel單元格設置(ExcelVBA學習筆記二)3

得到區域最大行号是7,最大列号是3,3 X 7 21個格子。

但是End屬性 在使用時受“空”單元格影響,如下圖:

vba excel單元格設置(ExcelVBA學習筆記二)4

End(xldown)向下遇到“空”單元格就停止了,所以n值等于5了。還有如下圖情況:隻有1行數據時,End(xldown)值會得到工作表最大行号1048576(EXCEL 2016版的最大行數)。

vba excel單元格設置(ExcelVBA學習筆記二)5

鑒于此,這些情況就要用end(xlup)。語句:Cells(Rows.count,”A”).End(xlup).Row。見下圖:

vba excel單元格設置(ExcelVBA學習筆記二)6

此示例中用了Cells表示的單元格。Rows.count表示工作表的最大行号,語句意思:Cells(Rows.count,”A”)表示【 A1048576】單元格(A列最下面的單元格),End(xlup)向上找,找到最近的有數據的單元格。找到的單元格就是A列最後一個有數據的。這樣就解決了“空”單元格問題與數據行隻有1行的問題。(常見到語句寫Range(”A65535”).End(xlup),同樣的用意)

END(xltoleft)與END(xltoright)是同理的用法。

單元格.CurrentRegion屬性

range().CurrentRegion返回指定單元格所在的連續區域,區域是以空行和空列為邊界的區域。在工作表中點選單元格,然後按Ctrl A得到的區域就是CurrentRegion。下圖兩個示例:

vba excel單元格設置(ExcelVBA學習筆記二)7

vba excel單元格設置(ExcelVBA學習筆記二)8

從上圖可看出,在區域外圍是以空行和空列為邊界。裡面單一的“空”單元格不影響CurrentRegion區域大小。

附:Worksheet對象的UsedRange屬性; UsedRange屬性返回工作表中已經使用的單元格構成的矩形區域(不管這些區域間是否有空行,空列或空單元格)。區域中會含蓋所有有數據(空格也算數據的)的單元格。

vba excel單元格設置(ExcelVBA學習筆記二)9

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved