作者zyi840449 (細胞)
看板Office
標題[算表] excel 使用VBA寫入格式化規則的問題
時間Thu Jun 20 16:47:40 2019
軟體:ofice excel
版本:2010
是這樣的,小弟弟我寫了一段巨集
希望能快速寫入格式化規則
巨集如下:
Sub testcolor()
Range("N6:T26").FormatConditions.Delete
Range("N6:T26").FormatConditions.Add Type:=xlExpression,
Formula1:="=($N6<>$Q6)*($Q6=$T6)"
Range("N6:T26").FormatConditions(1).Interior.Color = 13434879
Range("N6:T26").FormatConditions(1).StopIfTrue = False
End Sub
預期巨集執行完畢之後,格式化的條件規則管理員應該會看到如下:
公式: =($N6<>$Q6)*($Q6=$T6)
套用到:=$N$6:$T$26
-------
實際上直行完後的套用範圍沒有問題
但指定的公式會跑掉阿…
公式變成:=($N1048566<>$Q1048566)*($Q1048566=$T1048566)
請問這個要怎麼修正呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.146.13 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1561020462.A.79C.html
→ soyoso: 內文的巨集,測試上公式是 =($N6<>$Q6)*($Q6=$T6) 06/20 17:09
→ soyoso: 上面連結測試於內文寫到的2010是並無跑掉 06/20 17:54
→ soyoso: 但測試在2007版本上,如果作用儲存格在第22列內的話 06/20 17:55
→ soyoso: 就會產生如內文所寫的,公式變成=($N1048566<>$Q1048566)* 06/20 17:55
→ soyoso: ($Q1048566=$T1048566) 06/20 17:55
→ soyoso: 解決方式,將作用儲存格設為第6列(因為欄有絕對參照) 06/20 17:58
→ soyoso: 內的任一儲存格,如range("n6").select 06/20 17:58
→ soyoso: 或range("n6").activate 06/20 18:00
→ soyoso: 設於range.formatconditions.add 上方 06/20 18:01
→ zyi840449: 成功了!!感謝大大,所以這是office的Bug嗎… 06/21 15:13
→ zyi840449: 我一直以為公司用的版本是2010,原來是2007XD 06/21 15:14
→ soyoso: 應不是bug,因為測試於2003也會有類似的情況 06/21 15:31