【发布时间】:2018-01-17 13:41:57
【问题描述】:
我有一个基于 checkbox 的 Sub,我想在图表上显示数据标签和隐藏它们之间切换。我录制了宏并将其更改为不再显示 "Selection" 或 "ActiveChart",因为我不想让用户选择图表。我认为这就是我的问题所在,因为它完全没有任何作用。
我似乎无法缩小问题的范围,因为它是一个相当长的块。任何帮助将不胜感激!
Sub Checkbox()
Dim Cht As ChartObject
Set Cht = Sheet5.ChartObjects("Chart 12")
If Sheet1.Range("W11") = "TRUE" Then
Cht.Chart.SetElement (msoElementDataLabelTop)
Cht.Chart.ApplyDataLabels
Cht.Chart.FullSeriesCollection(1).DataLabels.Select
Cht.ShowCategoryName = True
Cht.Separator = "" & Chr(13) & ""
With Cht.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(127, 127, 127)
.Solid
End With
With Cht.Format.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
With Cht.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(68, 114, 196)
.Transparency = 0.75
.Solid
End With
Application.CommandBars("Format Object").Visible = False
Else: Cht.Chart.SetElement (msoElementDataLabelNone)
End If
End Sub
不久前有人告诉我,最好引用一个单元格而不是一个复选框,因此我让代码在 W11 中查找“TRUE”或“FALSE”的原因。如果看起来可行,我宁愿使用复选框。
【问题讨论】:
-
我建议单步执行您的代码(或使用
debug.print)来检查您的If语句是否按照您的预期进行。