Excel VBA 學習筆記13:單元格的格式

聲明:本系列文章是學習藍色幻想視頻和《別怕,Excel VBA其實很簡單》的

筆記總結,知識版權歸上述兩作品所有,圖片均來自藍色幻想視頻。

Excel VBA 學習筆記13:單元格的格式

一、判斷數值的格式

1. 判斷是否為空單元格

Excel VBA 學習筆記13:單元格的格式

判斷單元格是否為空常用3種方法:1、判斷內容是否為空;2、判斷單元格內容長度是否為0;3、判斷單元格是否為empty。

另請注意,此例先將B1單元格的內容設置為空,但其實B1已經被使用過了。我們經常會用快捷鍵ctrl+A或用VBA 選中當前區域,不可避免會有些空表格算進來,就像這個例子中的B1單元格是會包含進去的,因為已經被使用過了。

2. 判斷是否為數字

Excel VBA 學習筆記13:單元格的格式

判斷是否為數字有兩種方法:1、用VBA函數IsNumeric,但是它會將“空”歸為數字,所以需要加個判斷條件;2、利用工作表函數IsNumerber,它沒有上述問題,可直接使用。

3. 判斷是否為文本

Excel VBA 學習筆記13:單元格的格式

判斷是否為文本也有兩種方式:1、利用工作表函數IsText直接判斷;2、利用VBA函數TypeName判斷單元格內容的類型,注意,判斷的是內容的類型,所以一定要用.Value獲取單元格內容。另外,VBA對大小寫敏感(即嚴格區分大小寫),所以字符串類型String一定不要寫成string。

4. 判斷是否為漢字

Excel VBA 學習筆記13:單元格的格式

判斷漢字的方法很多,這節課裡提供了最簡單的一個方式:比小寫字母z大的字符。我們知道在ASCII碼中大寫字母在前,小寫字母在後,所以這裡判斷的是小寫z。

5. 判斷錯誤值

Excel VBA 學習筆記13:單元格的格式

在編程過程當中我們經常需要判斷前一步是不是出現了錯誤值,用VBA和工作表都提供了IsError函數,使用方法一樣。

6. 判斷日期

Excel VBA 學習筆記13:單元格的格式

判斷日期很簡單,利用VBA函數IsData就行。

二、設置單元格自定義格式

Excel VBA 學習筆記13:單元格的格式

這個例子將單元格格式設置成兩位小數了,使用了NumberFormatLocal屬性。實際工作中會需要不同類型的格式,可以先錄製一個宏查看代碼。

三、按指定格式從單元格返回數值

Excel中的顏色可以用兩種方式獲取,一種是EXCEL內置顏色,另一種是利用QBCOLOR函數返回。

1.內置顏色

Excel VBA 學習筆記13:單元格的格式

ColorIndex是單元格內置顏色,通過賦值產生變化。

2.QBColor顏色函數

Excel VBA 學習筆記13:單元格的格式

QBColor是個函數,注意其寫法要加括號。例子中Range().Interior.Color指的是單元格背景色。

3.RGB顏色

Excel VBA 學習筆記13:單元格的格式

RGB色彩模式是工業界的一種顏色標準,是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標準幾乎包括了人類視力所能感知的所有顏色,是目前運用最廣的顏色系統之一(摘自百度百科)。通過R、G、B三個值從0~255的變化得到不同的顏色。

藝術上三原色指的是紅、黃、藍,與工業有區別。

上面的例子告訴我們,漢字是可以作為變量名稱的,同樣要付出存儲空間的代價,因為漢字使用2字節存儲。

四、單元格合併

1.合併單元格

Excel VBA 學習筆記13:單元格的格式

製作表格的時候免不了要將內容相同的單元格進行合併,我們循序漸進,先學習合併的方法,最後會給出一個實際應用的例子。

merge就是合併的意思,具體是Range("單元格區域").Merge方法,取消合併用的是UnMerge,但是大部分情況下我們還想把原來的內容恢復了,這個後續再講。

2.合併區域的返回信息

Excel VBA 學習筆記13:單元格的格式

如果要獲得某個單元格所在合併區域的詳細地址用Range().MergeArea.Address

3.判斷是否含合併單元格

Excel VBA 學習筆記13:單元格的格式

判斷某單元格是否處於合併單元格中,用MergeCells屬性。但是,同時包含合併單元格和非合併單元格時,MergeCells屬性將返回Null,所以再改進一下代碼,利用IsNull函數來判斷,如果返回值是1證明該區域有合併單元格,如果返回值為0證明該區域不含合併單元格。

4.綜合示例

(1)合併單元格

Excel VBA 學習筆記13:單元格的格式

這裡給出了利用Union將相同內容單元格暫存起來,等判斷前後內容不一樣了進行合併的方法。每次手動合併單元格都會提示只保留左上角單元格內容,為了不讓提示框打斷代碼運行,我們用
Applicationg.DisplayAlerts = False或True來控制。

Excel VBA 學習筆記13:單元格的格式

這個方法是我比較常用的,既然每次合併只保留上面的單元格內容,那麼我們就倒著來判斷,如果下面的單元格跟上面的內容一樣,則合併(保留的是上面的內容),然後繼續下一次判斷。

(2)取消合併單元格並保留內容

Excel VBA 學習筆記13:單元格的格式

現在將前面的坑填上。取消單元格合併的時候,更多的希望恢復原樣,對吧?思路很直觀,我按順序循環整列,先把當前值存起來,再拿到這個單元格所在合併區域的單元格數量(如果不在合併區域下面代碼也會執行,只是不改變任何東西罷了),然後取消合併,再人為賦值。

需要注意有兩個減1:①賦值的時候減1是因為2~9共8個單元格,但是隻能在1的基礎上加7;②i值重新賦值進入下一個循環,道理跟前邊一樣。

相關筆記請參閱:

Excel VBA 學習筆記12:單元格信息

Excel VBA 學習筆記11:特殊單元格定位

Excel VBA 學習筆記10:單元格的選取

Excel VBA 學習筆記9:Excel工作表操作


分享到:


相關文章: