如何在 VBA 中使用 Excel 2013 按钮更改形状的填充颜色?

如何在 VBA 中使用 Excel 2013 按钮更改形状的填充颜色?

我正在尝试开发一个 Excel 版本的棒球记分卡,其中菱形代表一垒到三垒,五边形代表本垒板。

目前,我仅处理第一局中第一个球员的击球和跑垒信息,并将把工作代码复制到其他球员和其他局中。我在每个垒的顶部放置了隐藏按钮,在出局圈的顶部放置了一个按钮,四个按钮表示好球,三个按钮表示好球。

  1. 要点是,当投掷球或击球时,单击相应的按钮,按钮背景颜色将变为深灰色。如果玩家出局,则点击出局圆圈顶部的按钮,并用黑色的颜色。对于跑垒员安全到达的每个垒位,都会点击按钮,并且垒位会填充黑色的颜色。单击本垒按钮时,如果用黑色的颜色并将主分数框中的分数增加一。这有效吗?如果有效,有人能帮我完成每个事件的 VBA 部分吗?

  2. 如果由于任何原因出现了错误,可以再次点击相应的按钮并撤消之前的点击操作。

  3. 我将使用的测试方法是单击每个按钮以查看响应和效果。如果第一个玩家的按钮正常工作且不影响其他玩家,我将转到下一个玩家,看看单击该玩家的按钮是否会对之前的按钮产生影响。依此类推,直到我到达最后一局的最后一名玩家。我假设我不必测试每个玩家的按钮,并且在三到四个玩家正常工作后,所有玩家的按钮都将正常工作。

**我使用 MS Excel 2013 和 ActiveX 按钮来表示垒位,并使用外圈和表单按钮来表示球和击球。

答案1

完全不清楚您需要什么帮助。此代码将在工作表上创建一个按钮:

Sub Creator()
    Dim shp As Shape

    Set shp = ActiveSheet.Shapes.AddShape(1, 100, 10, 60, 60)
    shp.TextFrame.Characters.Text = "Press Me"
    shp.Name = "MyButton"
End Sub

创建形状后,为其分配此宏:

Sub ButtonPressCode()
    Dim shp As Shape, R As Integer, G As Integer, B As Integer

    Set shp = ActiveSheet.Shapes("MyButton")
    With Application.WorksheetFunction
        R = .RandBetween(1, 255)
        G = .RandBetween(1, 255)
        B = .RandBetween(1, 255)
    End With
    shp.Fill.ForeColor.RGB = RGB(R, G, B)
End Sub

每次单击按钮,形状都会改变颜色:

在此处输入图片描述

相关内容