|
UsedRange屬性是我們?cè)赩BA編程中經(jīng)常用到的一個(gè)極為重要的屬性,下面介紹UsedRange屬性。 如果您想知道當(dāng)前工作表中所有已使用的單元格區(qū)域的大小,或者您想引用當(dāng)前工作表中已使用的區(qū)域,那么您可能就要想到UsedRange屬性了。 UsedRange屬性應(yīng)用于Worksheet對(duì)象,返回指定工作表中已使用區(qū)域的Range對(duì)象,即返回工作表中已使用的單元格區(qū)域。因此,該屬性也可以用于選取單元格區(qū)域。 下面用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明UsedRange屬性的功能。 如下圖1所示的工作表: 圖1:一個(gè)帶有數(shù)據(jù)的工作表 然后,在VBE編輯器中輸入如下代碼:
代碼運(yùn)行后,上面的工作表顯示如下圖2所示: 圖2:代碼運(yùn)行后的工作表 即在指定工作表中(本例為工作表Sheet1)已使用范圍被全部選中??梢钥闯?,UsedRange屬性返回工作表中所有已使用范圍的單元格區(qū)域,而不管該區(qū)域數(shù)據(jù)間是否有空行或空格。 特別注意:UsedRange屬性返回工作表中所有已使用范圍的單元格區(qū)域是指:?jiǎn)卧裰杏袛?shù)值、公式、單元格格式化設(shè)置(例如:?jiǎn)卧褡煮w設(shè)置、邊框設(shè)置等等) 因?yàn)閷傩評(píng)sedrange包含著帶格式的、空白的單元格,所以只要有這樣的單元格,就會(huì)被統(tǒng)計(jì)上,因此,手動(dòng)清除數(shù)據(jù)后(清除文字、背景色、合并單元格),還會(huì)有多出的行,只有徹底刪除之后才會(huì)正確統(tǒng)計(jì)。徹底清除語(yǔ)句:cells.clear。 ?UsedRange屬性的一些常見(jiàn)用法: 妙用UsedRange對(duì)象可以獲得工作表的很多信息: (1)已用單元格區(qū)域的第一行行序數(shù):UsedRange.Row (2)已用單元格區(qū)域的占用的行數(shù):UsedRange.Rows.Count (3)已用單元格區(qū)域的最后一行的列序數(shù): UsedRange .Row+ UsedRange. Rows.Count-1 (重要) (4)已用單元格區(qū)域的第一列列序數(shù):UsedRange.Column (5)已用單元格區(qū)域的占用的列數(shù):UsedRange.Columns.Count 已用單元格區(qū)域的最后一列的列序數(shù):UsedRange.Column+UsedRange.Columns.Count-1,UsedRange.Areas.Count>1除外(Areas(index)也返回的是Range對(duì)象) (6)已用單元格區(qū)域的占用的總單元格數(shù):UsedRange.Cells.Count或 Me.UsedRange.Count,返回的只是“行數(shù)×列數(shù)”,所以無(wú)論內(nèi)部有無(wú)合并單元格,此值不受影響。 (7)語(yǔ)句Activesheet.UsedRange.Address返回當(dāng)前工作表已使用單元格區(qū)域的地址 ?end(xlup).row與usedrange.row的探討 說(shuō)到這里,上面第三條已用單元格區(qū)域的最后一行的列序數(shù): UsedRange .Row+ UsedRange. Rows.Count-1 ,我們平時(shí)時(shí)獲取已用單元格區(qū)域的最后一行的列序數(shù)一般都是用range("").end(xlup).row。 那么這兩種方法的區(qū)別是什么呢? 對(duì)于上圖
兩段代碼得到的最后一行的行數(shù)是一樣的。 但是,如果是下圖的情況,兩者就有區(qū)別。 ss =9,而 tt=4。 總結(jié):對(duì)于確定某一列一定有該Sheet已用單元格區(qū)域的最后一行的話,用end(xlup).row與 UsedRange .Row+ UsedRange. Rows.Count-1都可以,但是如果Sheet中不確定是那一列有該Sheet已用單元格區(qū)域的最后一行,這個(gè)時(shí)候就只能用“ UsedRange .Row+ UsedRange. Rows.Count-1 ”獲取已用單元格區(qū)域的最后一行的列序數(shù)。 這段話有點(diǎn)拗口,希望反復(fù)斟酌理解。很有用處。 |
|
|
來(lái)自: VBA說(shuō) > 《VBA》