我正在尝试开发一个 Excel 版本的棒球记分卡,其中菱形代表一垒到三垒,五边形代表本垒板。
目前,我仅处理第一局中第一个球员的击球和跑垒信息,并将把工作代码复制到其他球员和其他局中。我在每个垒的顶部放置了隐藏按钮,在出局圈的顶部放置了一个按钮,四个按钮表示好球,三个按钮表示好球。
要点是,当投掷球或击球时,单击相应的按钮,按钮背景颜色将变为深灰色。如果玩家出局,则点击出局圆圈顶部的按钮,并用黑色的颜色。对于跑垒员安全到达的每个垒位,都会点击按钮,并且垒位会填充黑色的颜色。单击本垒按钮时,如果用黑色的颜色并将主分数框中的分数增加一。这有效吗?如果有效,有人能帮我完成每个事件的 VBA 部分吗?
如果由于任何原因出现了错误,可以再次点击相应的按钮并撤消之前的点击操作。
我将使用的测试方法是单击每个按钮以查看响应和效果。如果第一个玩家的按钮正常工作且不影响其他玩家,我将转到下一个玩家,看看单击该玩家的按钮是否会对之前的按钮产生影响。依此类推,直到我到达最后一局的最后一名玩家。我假设我不必测试每个玩家的按钮,并且在三到四个玩家正常工作后,所有玩家的按钮都将正常工作。
**我使用 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
每次单击按钮,形状都会改变颜色: