第一章 入門篇 1.10 END語(yǔ)句通常用法 上一節(jié)我們講了END語(yǔ)句的基本用法,但在日常寫VBA程序時(shí),我們通常不那么寫,為什么呢? 平時(shí)應(yīng)用END語(yǔ)句定義邊界時(shí),由于表內(nèi)可能存在空格,如果用xlDown、xlToRight來(lái)定義數(shù)據(jù)區(qū)域的下邊界和右邊界,系統(tǒng)定義到空格時(shí)就停止了,造成定義不準(zhǔn)確。
比如上圖,以“a1”單元格為基準(zhǔn)單元格,用xlDown定義下邊界,系統(tǒng)判斷到“C同學(xué)”單元格就停止了,所以Range('a1').End(xlDown).Row返回的是4;用xlToRight定義右邊界,系統(tǒng)判斷到“數(shù)學(xué)”單元格就停止了,所以Range('a1').End(xlToRight).Column返回的是3。這樣執(zhí)行程序就會(huì)有錯(cuò)誤的結(jié)果。 那我們應(yīng)該怎么寫來(lái)定義數(shù)據(jù)的邊界呢?別著急,先讓我們來(lái)看看row和rows的區(qū)別。 row返回單元格所在行的行號(hào),如果是區(qū)域,就返回這個(gè)區(qū)域的首行的行號(hào)。 例如Range('c5').Row 返回'c5'單元格所在行的行號(hào)5 rows代表行的集合,返回range對(duì)象。 Rows.Select 選擇所有行 Rows('1:10').Select 選擇1-10行 寫VBA程序時(shí),我們通常會(huì)用到rows.count與columns.count: rows.count 獲取最大行號(hào) columns.count 獲取最大列號(hào) 一般應(yīng)用時(shí),定義下邊界,會(huì)用rows.count,先到表格的最下邊界,也就是表格能容許的最大行號(hào),再用xlUp向上找到數(shù)據(jù)區(qū)域的最下面一行,以此來(lái)定義數(shù)據(jù)區(qū)域的下邊界;定義右邊界,會(huì)用columns.count,先到表格的最右邊界,也就是表格能容許的最大列數(shù),再用xlToLeft向左找到數(shù)據(jù)區(qū)域的最右面一列,以此來(lái)定義數(shù)據(jù)區(qū)域的右邊界。 上節(jié)的END語(yǔ)句程序可以修改成這樣: Sub END語(yǔ)句2() h = Cells(Rows.Count, 1).End(xlUp).Row l = Cells(1, Columns.Count).End(xlToLeft).Column For i = 2 To h For n = 2 To l If Cells(i, n) < 60 Then Cells(i, n).Interior.ColorIndex = 3 End If Next Next End Sub 這樣修改以后,程序執(zhí)行出錯(cuò)的機(jī)率就小多了。當(dāng)然,如果你能確保要處理的表格里沒(méi)有空格,直接用上節(jié)那個(gè)簡(jiǎn)單的程序就足夠了。 |
|