VBA,用button点击填充形状

我对macros很陌生,我试图在Excel 2013中教自己的VBA,并可以使用很多帮助。 我想知道如何改变一个形状填充颜色(而不是单元格),当我点击一个ActiveXbutton。 这是我在想什么:

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 

顺便说一句,这是为了好玩,而不是为了什么特别的或官方的。

这里是你正在寻找的代码:

 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 

只要确保您将上面的代码调整到正确的形状名称(本例中为“Rectablge 1”,位于Sheet(1)上)。

之后,在该表格上创build一个button,并将该macros指定给该button以使其工作,并在黑色和灰色之间切换形状颜色。

下一次,我build议你(第一步)用VBAmacros录像机logging下你想让Excel做的事情: https : //www.youtube.com/watch?v= Q_HQGHPBYoo然后,看看代码并尝试通过突出显示VBA关键字并按F1来理解它。 另外,我build议阅读这个: http : //www.homeandlearn.org/之后,你应该写一些相当花哨的macros。

把它放在包含button的工作表的模块中:

编辑:对不起,我原本以为你想要改变实际的button颜色。 我从拉尔夫的回答中借鉴了这个形状是颜色变化的对象,但是下面这个是针对一个ActiveX控件(如你问的),而不是一个表单button:

 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 

是的,你需要一个button名称。 将一个ActiveX控件放在工作表上,然后转到VBE中的工作表模块。 在代码窗格顶部的左侧下拉列表中,find您的控件名称(您可能希望先将其重命名 – 我没有为此示例)

在这里输入图像说明

当您在左下拉select控件名称和右侧的事件名称时,VBE存根Sub和End Sub为您。

接下来你需要在代码中引用你的形状。 首先使用Me关键字。 当您在工作表的代码模块中时, Me指的是该工作表。 然后点运算符将公开该表的所有属性和方法。 在工作表上放置ActiveX控件时,会自动创build工作表的新属性,以提供对该对象的访问。 您可以使用

 Me.CommandButton1.BackColor = RGB(231, 230, 230) 

If逻辑看起来不错。