用于更改颜色的 Powerpoint VBA 宏

问题描述 投票:0回答:1

令我惊讶的是,还没有人问过这个问题,也许人们在编程方面并不像我那么无能:

我想在 PowerPoint 中编写一个按钮,通过单击该按钮或在插入特定数字时更改颜色。

我有这个:

Dim clickCount As Integer

Sub ChangeButtonColor()
    Dim btn As Shape
    Set btn = ActivePresentation.Slides(1).Shapes("Button2") ' Button2 is my button
    
    clickCount = clickCount + 1
    Select Case clickCount
        Case 1
            btn.Fill.ForeColor.RGB = RGB(139, 0, 0) ' dark red
        Case 2
            btn.Fill.ForeColor.RGB = RGB(255, 0, 0) ' red
        Case 3
            btn.Fill.ForeColor.RGB = RGB(255, 165, 0) ' orange
        Case 4
            btn.Fill.ForeColor.RGB = RGB(255, 255, 0) ' yellow
        Case 5
            btn.Fill.ForeColor.RGB = RGB(0, 255, 0) ' green
        Case Else
            btn.Fill.Visible = msoFalse ' transparent fill
            clickCount = 0 ' set clickCount back to 0
    End Select
End Sub

有人可以帮助我并告诉我错误在哪里吗?在我看来,循环应该没问题,不是吗?

提前致谢!

我尝试用宏来实现。我认为没有其他方法,如果有请告诉我。

我已经在形状和交互式按钮中尝试过,但都不起作用。 Perplexity 还向我建议了一个包含 5 个案例且没有 else 案例的循环,但没有任何效果。

至少当我将宏分配给交互式按钮框架时,通过单击它会变色一秒钟,我什至不知道这是否正常。

如果我理解正确的话,应该是 clickCount 正确的东西?

vba colors powerpoint ms-office
1个回答
0
投票

我想您正在使用 ActiveX-Command 按钮。

那么你不能直接使用该形状 - 但可以使用它的 OLE 组件

Sub ChangeButtonColor()
    Dim btn As CommandButton
    Set btn = ActivePresentation.Slides(1).Shapes("Button2").OLEFormat.Object
    
    clickCount = clickCount + 1
    Select Case clickCount
        Case 1
            btn.ForeColor = RGB(139, 0, 0)  ' dark red
        Case 2
            btn.ForeColor = RGB(255, 0, 0) ' red
        Case 3
            btn.ForeColor = RGB(255, 165, 0) ' orange
        Case 4
            btn.ForeColor = RGB(255, 255, 0) ' yellow
        Case 5
            btn.ForeColor = RGB(0, 255, 0) ' green
        Case Else
            btn.ForeColor = msoFalse ' transparent fill
            clickCount = 0 ' set clickCount back to 0
    End Select
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.