Excel实战技巧:动态的笑脸图

网友投稿 371 2022-11-24

Excel实战技巧:动态的笑脸图

无意中看到的一个技巧,非常有意思,稍作整理和修改,在这里和大家分享。

如下图1所示,在工作表中绘制了一个笑脸图,根据单元格H3中的数值来变换嘴唇的弧度。数值在0至50之间,是哭脸,超过50后就是笑脸了。

图1

在单元格H3中,设置数据有效性,只能在该单元格中输入0至100之间的整数,如下图2所示。

图2

在笑脸所在的工作表模块中,输入代码

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo errHandler

Dim sh As Shape

Dim myMin As Double

Dim myMax As Double

Set sh = Shapes(“HappyFace”)

‘Excel 2003中,min=0.7181 max=0.8111

‘Excel 2007后,min=-0.04653 max0.04653

myMin = -0.04653

myMax = 0.04653

If Target.Address = “$H$3″ Then

Application.EnableEvents = False

sh.Adjustments.Item(1) _

= myMin + (myMax – myMin) * Target.Value/ 100

End If

exitHandler:

Application.EnableEvents = True

Exit Sub

errHandler:

MsgBox Err.Number & ” ” &Err.Description

GoTo exitHandler

End Sub

这里,添加了一段简单的代码,让单元格H3中的数字连续改变,从而实现笑脸不断变化,如下图3所示。

图3

下面,我们让笑脸随着分数的变化,颜色也同时发生变化,如下图4所示。

图4

相应的工作表模块代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo errHandler

Dim sh As Shape

Dim myMin As Double

Dim myMax As Double

Dim myColor As Long

Set sh = Shapes(“HappyFace”)

‘Excel 2003中, min=0.7181 max=0.8111

‘Excel 2007后, min=-0.04653 max=0.04653

myMin = -0.04653

myMax = 0.04653

If Target.Address = “$H$3″ Then

Application.EnableEvents = False

sh.Adjustments.Item(1) _

= myMin + (myMax – myMin) * Target.Value/ 100

‘修改形状颜色

‘小于60%  红色

‘60%- 90% 橙色

‘90%-100% 绿色

Select Case Target.Value

Case Is >= 90: myColor _

= RGB(146, 208, 80) ‘绿色

Case Is >= 60: myColor _

= RGB(255, 192, 0) ‘橙色

Case Else: myColor _

= RGB(255, 0, 0) ‘红色

End Select

sh.Fill.ForeColor.RGB = myColor

End If

exitHandler:

Application.EnableEvents = True

Exit Sub

errHandler:

MsgBox Err.Number & ” ” &Err.Description

GoTo exitHandler

End Sub

同样,我们也可以设置一段代码,让笑脸连续变化,如下图5所示。

图5

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:excel自动填满单元格
下一篇:如何使用VBA操控Excel界面
相关文章