添加新系列后Chart name不显示,折线叠柱图命名异常求助
解决Excel VBA折线叠柱图标题消失的问题
首先得掰扯清楚:你要的是显示在图表上的标题文本,而不是VBA里图表对象的后台标识名称。你之前用的ActiveChart.Name和ActiveChart.Parent.Name都不是用来设置可见标题的,这就是问题的核心所在。
问题分析
你的代码里没有主动创建并设置图表标题,单系列时Excel可能默认帮你显示了标题,但添加第二个系列后自动隐藏了;另外你最后删除图例的操作,也可能间接影响了标题的显示逻辑。
修正后的代码
我调整了你的代码,补上了图表标题的设置,还优化了代码结构(尽量不用Activate和Select,这是VBA写代码的最佳实践,能避免很多莫名其妙的问题):
Dim myChtObj As ChartObject Dim myChart As Chart ' 创建图表对象 Set myChtObj = ActiveSheet.ChartObjects.Add _ (Left:=100, Width:=800, Top:=75, Height:=400) Set myChart = myChtObj.Chart ' 设置初始图表类型为簇状柱形图 myChart.ChartType = xlColumnClustered ' 添加柱形系列 With myChart.SeriesCollection.NewSeries .Name = sheetName .Values = yValues .XValues = xValues End With ' 添加折线系列 With myChart.SeriesCollection.NewSeries .Name = "line" .Values = yValues .XValues = xValues .ChartType = xlLine End With ' 添加并设置图表标题(这是关键!) myChart.HasTitle = True myChart.ChartTitle.Text = "你的图表标题内容" ' 把这里换成你实际想要的标题文本 ' 删除图例(如果确实需要的话) myChart.HasLegend = False
关键说明
myChart.HasTitle = True:强制开启图表标题显示,不管Excel的默认行为怎么变myChart.ChartTitle.Text:直接设置标题的具体内容,想写啥就写啥- 用对象变量(比如
myChart)代替ActiveChart,不用反复激活图表,代码更稳定不容易出bug
另外,如果你确实是想修改图表对象的后台名称(比如在工作表选择窗格里显示的那个名称,用来给VBA操作识别用的),那应该用myChtObj.Name = "自定义图表名称",这个名称不会显示在图表上,只是后台标识。
内容的提问来源于stack exchange,提问作者Juras Rabačauskas
相关产品推荐
相关产品推荐

