返回列表 上一主題 發帖

[發問] Excel VBA 儲存格字體變色事宜(不同序頁無法變色)

回復 1# syuan

單純從畫面上看起來你 Sheet3 的 A 欄有文字,
但 Sheet1 卻沒有字,
會不會是這個原因?

TOP

本帖最後由 luhpro 於 2012-9-22 04:16 編輯
回復  luhpro
回Luhpro
小弟依您建議,將字挪到A欄後再執行,的確就能改變字的顏色,感謝您 ...
syuan 發表於 2012-9-21 11:59

不知道是不是版本不同的原因,
我跑你的程式並不會變色(sheet1 與 sheet3 都顯示 I can't)
似乎與你所敘述的結果不同,
這樣就無法找到問題的癥結了.

這裡嘗試提出幾個建議看是否能找到問題點:
1. 使用單步執行(按 F8 按鍵)執行至停在 If 那行,
再於即時運算視窗先 Key 一個 ? 並於其右方複製後貼上條件式的內容,
(即 ?Worksheets("sheet3").Cells.Font.Color = vbRed )
看看系統給出的條件式判斷結果為何,
---> 我看到的是 Null (雖非相同但結果接近 非真<True> )

2. 再細部一點於 ? 右方分別接上條件判斷式中 = 左邊 與 右邊 的內容,
看看系統告訴我們兩邊的運算結果各是什麼?
(即 ?Worksheets("sheet3").Cells.Font.Color 與 ?vbRed )
---> 我看到的是 Null 與 255

3. 我們也可以確認單一儲存格的文字顏色代碼是多少,
例 : ?Worksheets("sheet3").[A1].Font.Color
你可以試試看分別將兩個儲存格設成 黑色 與 自動 再測看看是否系統會顯示不同色碼.
---> 我看到的都是 0
其實在你提供的圖片上就可以看出來,
"自動" 那個選項的左方有個方格它的顏色就有告訴你目前 "自動" 所對應的顏色就是黑色的.

4. 不論是 .Range("A1:AZ1000") 還是 .cells 都是在表示 "多個儲存格",
它並不適合用於 If 指令的判斷上,
因為其中的各個儲存格可以分別有不同的顏色,
這將導致判斷式的結果為無法確認結果(Null).
要對多個儲存格作判斷式的處理,
應該在其外先套用 For Each  與 Next 以表示依序對其內所有的儲存格作判斷與處理.
建議程式碼如下 :
  1.     Worksheets("sheet3").Activate
  2.     Dim a As Range
  3.    
  4.     For Each a In Worksheets("sheet3").[B2].CurrentRegion
  5.       If a.Font.Color = vbRed Then a.Font.Color = vbBlack
  6.     Next
複製代碼

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題