作者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://webptt.com/cn.aspx?n=bbs/Office/M.1561020462.A.79C.html
1F:→ soyoso: 内文的巨集,测试上公式是 =($N6<>$Q6)*($Q6=$T6) 06/20 17:09
3F:→ soyoso: 上面连结测试於内文写到的2010是并无跑掉 06/20 17:54
4F:→ soyoso: 但测试在2007版本上,如果作用储存格在第22列内的话 06/20 17:55
5F:→ soyoso: 就会产生如内文所写的,公式变成=($N1048566<>$Q1048566)* 06/20 17:55
6F:→ soyoso: ($Q1048566=$T1048566) 06/20 17:55
8F:→ soyoso: 解决方式,将作用储存格设为第6列(因为栏有绝对参照) 06/20 17:58
9F:→ soyoso: 内的任一储存格,如range("n6").select 06/20 17:58
10F:→ soyoso: 或range("n6").activate 06/20 18:00
11F:→ soyoso: 设於range.formatconditions.add 上方 06/20 18:01
12F:→ zyi840449: 成功了!!感谢大大,所以这是office的Bug吗… 06/21 15:13
13F:→ zyi840449: 我一直以为公司用的版本是2010,原来是2007XD 06/21 15:14
14F:→ soyoso: 应不是bug,因为测试於2003也会有类似的情况 06/21 15:31