我编写了一个简单的Excel VBA宏,在单个单元格中有不同的格式。我有一个公式,它返回4个可能的值之一:
我希望格式化为第一个字符的Wingdings,颜色基于数字 - 1 =红色,2 =橙色,3 =黄色,4 =绿色。
我所做的是在细胞更换上加入事件触发器:
Private Sub Worksheet_Change(ByVal Target As Range)
Call Wingdings(Target)
End Sub
子程序如下:
Sub Wingdings(rCll As Range)
If rCll.Value = "l1" Or rCll.Value = "l2" Or _
rCll.Value = "l3" Or rCll.Value = "l4" Then
Select Case Right(rCll.Value, 1)
Case 1 'Red
With rCll.Characters(Start:=1, Length:=1).Font
.Name = "Wingdings"
.Color = RGB(255, 0, 0)
End With
Case 2 'Orange
With rCll.Characters(Start:=1, Length:=1).Font
.Name = "Wingdings"
.Color = RGB(255, 153, 0)
End With
Case 3 'Yellow
With rCll.Characters(Start:=1, Length:=1).Font
.Name = "Wingdings"
.Color = RGB(255, 255, 0)
End With
Case 4 'Green
With rCll.Characters(Start:=1, Length:=1).Font
.Name = "Wingdings"
.Color = RGB(0, 255, 0)
End With
End Select
End If
End Sub
我的问题是,如果我手动输入例如l4,代码运行完美。但是一旦我使用公式确定这个值,它就会按照我的意愿停止工作。我最终得到了这个:
有人可以建议一个解决方案,让我按照我的意愿格式化公式的结果吗?
答案 0 :(得分:0)
你的工作。
如果你要拖动公式
,也许有条件地在Change事件上调用类似的东西Sub fixstuff()
For Each cell In Selection
cell.Select
Call Wingdings(Range(cell.Address))
Next cell
End Sub