查找某行最后一個紅色的單元格,當(dāng)時說的是用循環(huán)的方法挨著個判斷單元格的interior.colorindex屬性,這種方法可行,但是循環(huán)起來會比較慢。今天翻看以前的代碼,發(fā)現(xiàn)其實(shí)很早之前就寫過類似的程序,時間太久忘了,說來這也是”溫故而知新“的一個佐證,沒事的時候多回去看看以前學(xué)的東西,說不定就會有新的驚喜。 言歸正傳,在手動操作的時候也是可以實(shí)現(xiàn)查找格式的,在查找對話框設(shè)置查找格式即可 那我們就可以錄制個宏來看看這個過程是怎樣實(shí)現(xiàn)的。下面是我錄制的代碼
第一段代碼就是在設(shè)置要查找的格式了,和普通查找不同的地方在于Find函數(shù)的SearchFormat屬性要設(shè)置為True。下面我們就改造上面的代碼,來實(shí)現(xiàn)查找第1行的第1個紅色單元格和最后一個紅色單元格。
上面的代碼是查找第1行最后一個紅色的單元格,其中Application.FindFormat.Interior.Color = 255是規(guī)定查找的格式是紅色,F(xiàn)ind函數(shù)中我留了4個參數(shù),what是不能省略的,表示查找的內(nèi)容,這里內(nèi)容為空,after表示從哪個單元格開始查,這里一定要注意程序不會查到這個單元格本身,而是從它的下一個開始查,SearchDirection表示查找的方向,xlPrevious表示從after規(guī)定的單元格往前查找,xlNext表示往后查找,SearchFormat說過了,表示查找格式。為什么這段代表可以找到最后一個紅色單元格?關(guān)鍵就在After和SearchDirection兩個參數(shù)的搭配上,從區(qū)域的第一個單元格cells(1,1)往前查,再往前不就是到最后了嗎? 同樣的,如果我們要查找區(qū)域中第一個紅色單元格,那我們從區(qū)域的最后一個單元格往后查即可。
這里說幾句關(guān)于查找格式的問題,在用find函數(shù)進(jìn)行查找時我們可以用findnext函數(shù)來實(shí)現(xiàn)查找下一個數(shù)據(jù),但是在查找格式的時候findnext是不可行的,findnext不會保留查找的格式設(shè)置,所以要想實(shí)現(xiàn)依次查找所有的符合條件的格式你需要記錄下上一次查找的位置,并重新設(shè)置格式,然后再用find函數(shù)進(jìn)行查找。 |
|