按用户选择填充许多选定形状的颜色

发布于 2025-01-31 02:29:42 字数 1788 浏览 2 评论 0原文

选择多个形状后,此代码提示每个选定的形状填充颜色。

Sub ChangeColorBasedonInput()
Dim myColor(1 To 10) As Long
Dim x As Integer
Dim z As Integer
Dim colorChoice As Integer

myColor(1) = RGB(77, 60, 47)
myColor(2) = RGB(207, 189, 155)
myColor(3) = RGB(192, 113, 86)
myColor(4) = RGB(232, 199, 103)
myColor(5) = RGB(174, 176, 179)
myColor(6) = RGB(164, 55, 37)
myColor(7) = RGB(237, 215, 157)
myColor(8) = RGB(123, 125, 128)
myColor(9) = RGB(230, 182, 164)
myColor(10) = RGB(70, 71, 73)

On Error Resume Next

z = ActiveWindow.Selection.ShapeRange.Count

For x = 1 To z
    With ActiveWindow.Selection.ShapeRange(x)
        colorChoice = InputBox("Please select the color you want for Shape " & x & ", from 1 - 10")
        .Fill.ForeColor.RGB = myColor(colorChoice)
    End With
Next x

End Sub

这是一个麻烦,要一一输入颜色选择,所以我尝试编写代码以输入填充颜色选择(从上面的数组中,它将填充形状。
例如,当我选择7时,填充来自MyColor(7)的形状。

Sub ChangeColorBasedon_EnterOnceOnly()
Dim myColor(1 To 10) As Long
Dim x As Integer
Dim z As Integer
Dim colorChoice As Integer

myColor(1) = RGB(77, 60, 47)
myColor(2) = RGB(207, 189, 155)
myColor(3) = RGB(192, 113, 86)
myColor(4) = RGB(232, 199, 103)
myColor(5) = RGB(174, 176, 179)
myColor(6) = RGB(164, 55, 37)
myColor(7) = RGB(237, 215, 157)
myColor(8) = RGB(123, 125, 128)
myColor(9) = RGB(230, 182, 164)
myColor(10) = RGB(70, 71, 73)

On Error Resume Next

z = ActiveWindow.Selection.ShapeRange.Count

colorChoice = InputBox("Please select the color you want for Shape " & x + 1 & ", from 1 - 10")

For x = 1 To z
    With ActiveWindow.Selection.ShapeRange(x)
        .Fill.ForeColor.RGB = myColor(colorChoice)
    End With
    colorChoice = colorChoice + x
Next x

End Sub

After selecting a number of shapes, this code prompts for fill color for each selected shape.

Sub ChangeColorBasedonInput()
Dim myColor(1 To 10) As Long
Dim x As Integer
Dim z As Integer
Dim colorChoice As Integer

myColor(1) = RGB(77, 60, 47)
myColor(2) = RGB(207, 189, 155)
myColor(3) = RGB(192, 113, 86)
myColor(4) = RGB(232, 199, 103)
myColor(5) = RGB(174, 176, 179)
myColor(6) = RGB(164, 55, 37)
myColor(7) = RGB(237, 215, 157)
myColor(8) = RGB(123, 125, 128)
myColor(9) = RGB(230, 182, 164)
myColor(10) = RGB(70, 71, 73)

On Error Resume Next

z = ActiveWindow.Selection.ShapeRange.Count

For x = 1 To z
    With ActiveWindow.Selection.ShapeRange(x)
        colorChoice = InputBox("Please select the color you want for Shape " & x & ", from 1 - 10")
        .Fill.ForeColor.RGB = myColor(colorChoice)
    End With
Next x

End Sub

It is a hassle to enter the color choice one by one, so I tried to write code to enter fill color selection once (from the above array and it will fill the shapes.
E.g. when I select 7, fill the shapes from myColor(7) onwards.

Sub ChangeColorBasedon_EnterOnceOnly()
Dim myColor(1 To 10) As Long
Dim x As Integer
Dim z As Integer
Dim colorChoice As Integer

myColor(1) = RGB(77, 60, 47)
myColor(2) = RGB(207, 189, 155)
myColor(3) = RGB(192, 113, 86)
myColor(4) = RGB(232, 199, 103)
myColor(5) = RGB(174, 176, 179)
myColor(6) = RGB(164, 55, 37)
myColor(7) = RGB(237, 215, 157)
myColor(8) = RGB(123, 125, 128)
myColor(9) = RGB(230, 182, 164)
myColor(10) = RGB(70, 71, 73)

On Error Resume Next

z = ActiveWindow.Selection.ShapeRange.Count

colorChoice = InputBox("Please select the color you want for Shape " & x + 1 & ", from 1 - 10")

For x = 1 To z
    With ActiveWindow.Selection.ShapeRange(x)
        .Fill.ForeColor.RGB = myColor(colorChoice)
    End With
    colorChoice = colorChoice + x
Next x

End Sub

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

韶华倾负 2025-02-07 02:29:42

下一个X添加之前

If colorChoice > UBound(myColor) Then colorChoice = LBound(myColor) 

,如果选择了太多形状,则可能超过数组的界限

Just before Next x add

If colorChoice > UBound(myColor) Then colorChoice = LBound(myColor) 

or you may exceed the bounds of the array if too many shapes are selected

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文