VBA, Fill shape with button click
我对宏非常陌生,我正在尝试在excel 2013中自学VBA,并且可能会使用很多帮助。我想知道如何在单击ActiveX按钮时更改形状填充颜色(而不是单元格)。这是我的想法:
1 2 3 4 5 6 | onClick() <-- Do I need a button name? if shape.color = RGB(231,230,230) <-- this is the starting color shape.color = RGB(0,0,0) <-- this is what I want to change it to else shape.color = RGB(231,230,230) <-- if color is black change to this end if |
顺便说一句,这是为了娱乐,而不是为了任何特殊或正式的事情。
这是您要查找的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Option Explicit Sub ButtonClick() Dim shp As Shape Set shp = ThisWorkbook.Worksheets(1).Shapes("Rectangle 1") If shp.Fill.ForeColor.RGB = RGB(231, 230, 230) Then shp.Fill.ForeColor.RGB = RGB(0, 0, 0) Else shp.Fill.ForeColor.RGB = RGB(231, 230, 230) End If End Sub |
只需确保将上面的代码调整为正确的形状名称(在此示例中为Sheet(1)上的" Rectablge 1 ")。
然后,在该工作表上创建一个按钮,并将此宏分配给该按钮以使其起作用,并在黑色和灰色之间切换形状颜色。
下次,我建议您(第一步)使用VBA宏记录器记录您希望Excel为您做的事情:https://www.youtube.com/watch?v=Q_HQGHPBYoo之后,请查看代码并通过突出显示VBA关键字并按
将其放在包含按钮的工作表模块中:
编辑:对不起,我原本以为您希望更改按钮的实际颜色。我借用了拉尔夫(Ralph)的答案以说明形状是颜色更改的对象,但是在此之下是针对ActiveX控件(如您所要求的)而不是表单按钮:
1 2 3 4 5 6 7 8 9 | Private Sub CommandButton1_Click() ' Yes, you do need to specify the button Dim shp As Shape Set shp = ThisWorkbook.Worksheets(1).Shapes("Rectangle 1") If shp.Fill.ForeColor.RGB = RGB(231, 230, 230) Then shp.Fill.ForeColor.RGB = RGB(0, 0, 0) Else shp.Fill.ForeColor.RGB = RGB(231, 230, 230) End If End Sub |
是的,您需要一个按钮名称。将ActiveX控件放在工作表上,然后转到VBE中工作表的模块。在代码窗格顶部的左侧下拉列表中,找到您的控件名称(您可能想先对其重命名-在此示例中我没有使用该名称)
当您在左侧下拉列表中选择控件名称,并在右侧选择事件名称时,VBE为您添加Sub和End Sub的名称。
接下来,您需要在代码中引用形状。首先使用
1 | Me.CommandButton1.BackColor = RGB(231, 230, 230) |
您的