在使用 Excel 表格处理一些数据的时候,我们常常会用到一些宏或自定义的 VBA 代码用以便利数据处理。而对于一些宏或 VBA 代码,一般会使用一些表单控件或者 ActiveX 控件控制其运行,但是默认的这些控件样式比较丑,而更改这些控件的样式又不太方便,个人一般使用形状工具插入一些形状并简单修饰下形状来作为代码调用的按钮。默认情况下形状点击后并不会改变其样式,为了能更好地显示形状的选择状态,我们需要通过代码修改其样式。以下是我修改完成后点击前后的样式,在了解代码前先参照下。

看完了样式后,如果你感觉可以,那么就可以通过以下代码来设置一下了:

'Excel更改选中形状样式
Sub Custom_ShapeStyle(S)

    For Each myShape In ActiveSheet.Shapes
        '遍历每个自定义形状并初始化其样式
        myShape.Height = 20          '设置自定义形状高度
        myShape.Width = 100          '设置自定义形状宽度
        myShape.TextFrame.Characters.Font.Size = 11          '设置自定义形状文本字号
        myShape.TextFrame.Characters.Font.ColorIndex = 2           '设置自定义形状文本颜色
        myShape.TextFrame.HorizontalAlignment = xlCenter           '设置自定义形状文本对齐方式
        myShape.Fill.ForeColor.RGB = RGB(0, 112, 192)           '设置自定义形状底色
        myShape.Line.Weight = 0          '设置自定义形状轮廓线宽
        myShape.Line.ForeColor.RGB = RGB(0, 112, 192)           '设置自定义形状轮廓颜色
        myShape.Line.DashStyle = msoLineDash         '设置自定义形状轮廓样式
        myShape.Line.Visible = msoFalse          '设置自定义形状轮廓线可见性
    Next
        '设置每个选中的形状并更改其样式
        ActiveSheet.Shapes(S).TextFrame.Characters.Font.ColorIndex = 35
        ActiveSheet.Shapes(S).Fill.ForeColor.RGB = RGB(0, 176, 80)
        
End Sub
'调用自定义形状样式修改器修改形状1样式
Sub Macro1_Name()
    Custom_ShapeStyle "Shape1_Name"
End Sub

'调用自定义形状样式修改器修改指形状2样式
Sub Macro2_Name()
    Custom_ShapeStyle "Shape2_Name"
End Sub

代码各部分我已经做了详细的解释,大家根据自己情况修改即可。