gpt4 book ai didi

VBA 将 msoThemeColor 存储在变量中

转载 作者:行者123 更新时间:2023-12-02 07:16:49 25 4
gpt4 key购买 nike

我希望将 mso 主题颜色存储在变量中,以便图表颜色和图案可以动态更改(在这种情况下为变量 Th)。这是我当前的代码:

Dim Th As Long
Th = "msoThemeColorAccent" & ActiveCell.Offset(-5, 0)
If ActiveCell = "Realized" Then
ActiveChart.SeriesCollection(Srs).Select

With Selection.Format.Fill
.ForeColor.ObjectThemeColor = Th
.Solid
End With
With Selection.Format.Line
.ForeColor.ObjectThemeColor = Th
End With
End If

我认为这里的问题是我没有使用正确的 Dim 分类。我在这里看到了有关将 RGB 存储为变量的问题(使用 Dim Long 似乎是解决方案),但 msoThemeColors 上还没有任何问题。谢谢,如果我可以提供任何其他详细信息,请告诉我!

最佳答案

很难判断发生了什么,因为您的代码严重依赖默认成员。无论如何:

Dim Th As Long

这是正确的。

Dim themeColorIndex As MsoThemeColorIndex

这是正确的明确的(请参阅 MSDN 上的 MsoThemeColorIndex)。

Scott Holtzman said ,这里可能的值是 Enum 值,而不是字符串:您根本无法通过将字符串连接到定义的 Enum 名称之一来生成正确的值。

所以通过这样做:

Th = "msoThemeColorAccent" & ActiveCell.Offset(-5, 0)

我的猜测是,ActiveCell.Offset(-5, 0) 必须包含 1 到 6 之间的数字。这是一个危险的假设:ActiveCell 可能是字面意思任何东西。如果该值位于特定单元格中,请通过其地址引用它:

themeColorIndex = Sheet1.Range("B12").Value

稍微好一些,但它仍然假设B12中的值可以隐式转换为Long整数。

Dim selectedValue As Variant
selectedValue = Sheet1.Range("B12").Value
If Not IsNumeric(selectedValue) Then
MsgBox "Invalid value!"
Exit Sub
End If

If Sheet1.Range("E12").Value <> "Realized" Then Exit Sub

Dim themeColorIndex As MsoThemeColorIndex
themeColorIndex = selectedValue

如果您只对 msoThemeColorAccent1msoThemeColorAccent6 感兴趣,那么您需要 B12 包含值 5 code> 到 10,它们是您要查找的底层枚举值

如果出于可用性原因,您的工作表必须允许值 16,那么您可以执行以下操作:

Dim themeColorIndex As MsoThemeColorIndex
'msoThemeColorAccent1 underlying value is 5, so we add 4 to the value:
themeColorIndex = selectedValue + 4

那么您就做出了另一个危险的假设:您假设有一个事件图表!假设图表存在于 Sheet1 中,您最好再次明确地引用它:

Dim theChart As ChartObject
Set theChart = Sheet1.ChartObjects(1)
With theChart.SeriesCollection(srs) 'whatever srs means
With .Format
.Fill.ForeColor.ObjectThemeColor = themeColorIndex
.Fill.Solid
.Line.ForeColor.ObjectThemeColor = themeColorIndex
End With
End With

关于VBA 将 msoThemeColor 存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38130741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com