首先,代码如下:主要是要实现在第二行里加一个格式条件判断,如果A2="BAD", 则B2:AE2显示红色,或A2="OK",则显示黑色字体,或A2="SKIP",显示灰色字体。其次,如果直接运行代码,没有任何异常。但是如果回到excel里面操作一下,比如设置一个cell值,然后再回到代码编辑窗口Alt+F11, 再次运行,就会出现问题,格式的条件就变成了"OR($A1048559="BAD", $A1048559="TOBE")",而不是正确的”=OR($A2="BAD", $A2="TOBE")“。见下面的debug信息。请问大侠这是怎么回事。Sub ccc()
i = 2
With Range("B" & i & ":AE" & i)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR($A" & i & "=""BAD"", $A" & i & "=""TOBE"")"
.FormatConditions(1).Font.ColorIndex = 3
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$A" & i & "=""SKIP"""
.FormatConditions(2).Font.ColorIndex = 15
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$A" & i & "=""OK"""
.FormatConditions(3).Font.ColorIndex = 1
.Font.Bold = True
End With
Debug.Print Now & " After" & "£º" & Cells(2, 2).FormatConditions.Item(1).Formula1
End Subdebug 信息2012/6/10 0:54:56 After£º=OR($A2="BAD", $A2="TOBE")
2012/6/10 0:55:01 After£º=OR($A2="BAD", $A2="TOBE")
2012/6/10 0:55:06 After£º=OR($A2="BAD", $A2="TOBE")
2012/6/10 0:55:25 After£º=OR($A1048559="BAD", $A1048559="TOBE")
i = 2
With Range("B" & i & ":AE" & i)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR($A" & i & "=""BAD"", $A" & i & "=""TOBE"")"
.FormatConditions(1).Font.ColorIndex = 3
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$A" & i & "=""SKIP"""
.FormatConditions(2).Font.ColorIndex = 15
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$A" & i & "=""OK"""
.FormatConditions(3).Font.ColorIndex = 1
.Font.Bold = True
End With
Debug.Print Now & " After" & "£º" & Cells(2, 2).FormatConditions.Item(1).Formula1
End Subdebug 信息2012/6/10 0:54:56 After£º=OR($A2="BAD", $A2="TOBE")
2012/6/10 0:55:01 After£º=OR($A2="BAD", $A2="TOBE")
2012/6/10 0:55:06 After£º=OR($A2="BAD", $A2="TOBE")
2012/6/10 0:55:25 After£º=OR($A1048559="BAD", $A1048559="TOBE")
解决方案 »
- mysql数据库查询时,在局域网内速度正常,通过VPN局域网后就慢多了
- VB6如何解决用Winsock传送字符串内容客户端接收到的乱码问题
- 如何从系统字库中提取汉字?
- 版务:禁止作业帖,直接索要代码,文档帖
- 如何写入TEXT文档???
- 做了一个chm帮助文件,请问在vb的链接中该怎样打开它?谢谢,请帮忙!
- 请问在VB中如何备份数据
- 7月18日 ” 关于中国教育信息管理系统”的最新消息发布(关于软件组成)。
- dll封装的模态窗体Windows任务栏不显示,而非模态窗体不能截获,怎么办?
- 重装系统和VS后,为何提示 Chr(),Cstr()等函数找不到库文件?该怎么解决呢?
- 想学vb
- 求助:vb COOKIES的问题
isskdfjsldfkjsdf= 2
dim i
i = 2
With Range("B" & i & ":AE" & i)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR($A" & i & "=""BAD"", $A" & i & "=""TOBE"")"
.FormatConditions(1).Font.ColorIndex = 3
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$A" & i & "=""SKIP"""
.FormatConditions(2).Font.ColorIndex = 15
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$A" & i & "=""OK"""
.FormatConditions(3).Font.ColorIndex = 1
.Font.Bold = True
End With
Debug.Print Now & " After" & "£º" & Cells(2, 2).FormatConditions.Item(1).Formula1
End Sub或者加上变量声明来确认作用域
谢谢二楼的回复,不过我试了加上i的变量声明,还是没用,仍然出现
2012/6/10 0:55:25 After£º=OR($A1048559="BAD", $A1048559="TOBE")
而且“1048559”出的很奇怪,这个明显已经溢出excel的单元格了。
new_sheet.range("A3:#{str1}#{2 + content.size}").formatconditions.add :type => 2, :formula1 => "= A3 <> #{next_str(next_str str1)}3"
代码里hardcode的A3,跑到实际的公式里就莫名其妙变掉了,很不理解……