如何制作星形复选框?

时间:2019-01-07 12:09:55

标签: excel vba

仅供参考-我是个非常新手。

我想制作一个看起来像星星而不是正方形的复选框。我希望星星以白色为标准,然后单击一下即可变成黄色。再次单击,它将恢复为白色。就这么简单。

我正在考虑采用不同的方法来实现相同的结果,但是不幸的是,我没有使其中任何一个都具备的技能。

首先,我想我将创建一个复选框表单,并以某种方式能够将正方形更改为星形符号。我的Google搜索在这条路上没有给我任何帮助-也许我不够准确,但是却找不到任何东西。

第二,我的想法是只创建一个黄色星形符号,并使其可以通过函数单击,这只是我不知道该怎么做。

2 个答案:

答案 0 :(得分:4)

我使用了两张图片作为标签的背景(用于click事件)

Empty Star Filled Star

您可以用自己的图像替换这些图像。然后,将图像的大小设置为相同且位置相同,以使它们彼此重叠,并且FilledStarFalse的可见属性默认为True的{​​{1}}

我的用户表单后面的代码是:

EmptyStar

然后给出以下输出:

Result

另一种选择是让一个图像包含两个图像,并移动图像的位置,以便一次只显示其中的一部分。就正确移动/调整图像大小而言,这有点复杂,但这意味着您仅使用一个对象而不是两个。

答案 1 :(得分:3)

这是一个示例,说明如何在每个工作表上使用单个Star。

在工作表上放置一个星形,将其填充颜色设置为白色,然后将以下代码粘贴到标准vba模块中。 现在,通过右键单击形状并选择“分配宏”,将“ ColorChangeShape”宏分配给星形。

Sub ColorChangeShape()
ShpCol = ActiveSheet.Shapes.Range(Array("5-Point Star 1")).Fill.ForeColor.RGB
If ShpCol = RGB(255, 255, 0) Then
    ShpCol = RGB(255, 255, 255)
Else
    ShpCol = RGB(255, 255, 0)
End If
ActiveSheet.Shapes.Range(Array("5-Point Star 1")).Fill.ForeColor.RGB = ShpCol
End Sub