- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
7#
發表於 2012-9-22 04:14
| 只看該作者
本帖最後由 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 以表示依序對其內所有的儲存格作判斷與處理.
建議程式碼如下 :- Worksheets("sheet3").Activate
- Dim a As Range
-
- For Each a In Worksheets("sheet3").[B2].CurrentRegion
- If a.Font.Color = vbRed Then a.Font.Color = vbBlack
- Next
複製代碼 |
|