Excel vba,将系列类型从一行更改为一个区域,再更改为另一个区域,无法修改行属性

Excel vba,将系列类型从一行更改为一个区域,再更改为另一个区域,无法修改行属性,vba,excel,charts,Vba,Excel,Charts,动态更改图表配置 混合了直线和面积系列类型的组合图。 VBA代码根据工作表中的计算表更改每个系列的类型 类模块以访问系列属性和操作它们的方法。 目前,只需从下拉列表中选择图表类型,然后使用工作表上的更改事件来解析每个图表,并依次更改每个图表上的属性 心房肌改变: series Type (xlArea,xlLine) series Format.Line.Forecolor.RGB Format.Fill.Forecolor.RGB (Long: colours

动态更改图表配置

混合了直线和面积系列类型的组合图。 VBA代码根据工作表中的计算表更改每个系列的类型 类模块以访问系列属性和操作它们的方法。 目前,只需从下拉列表中选择图表类型,然后使用工作表上的更改事件来解析每个图表,并依次更改每个图表上的属性

心房肌改变:

series Type (xlArea,xlLine)
series Format.Line.Forecolor.RGB 
       Format.Fill.Forecolor.RGB 
       (Long: colours based cell.Interior.Color)

series Format.Line.Width (Single)

series Format.Fill.Transparency
       Format.Line.Transparency (Double: 0 to 1)
series Pattern for area Type
       seriesname.Format.Fill.Patterned if required  (MsoPatternType)
       seriesname.Format.Fill.Solid if not required
问题陈述

对于我的图表类型1,系列2是XLline,对于图表类型2,它是XLarea

我已经使用图表类型1运行了好几个星期,动态地改变了颜色、透明度和图表可见性 系列值和X值是命名范围,动态指向适当的向量(范围对象)

我现在介绍图表类型2

当我切换到图表类型2并返回到图表类型1时,我无法再设置线条颜色、透明度或宽度设置

我在excel应用程序中有一些组合图表,我想根据用户输入动态更改这些图表。我已经成功地做到了这一点,所有的工作都很好,直到我尝试为一种模式将系列类型从一行动态更改为一个区域,然后根据需要再次更改为原始配置

行为

如果我手动选择有问题的系列并打开“格式”对话框并稍微更改透明度设置(只需轻轻移离零即可),则重量和颜色设置将跳回原始设置,并且可以再次通过VBA进行更改

我也可以通过在行选项中选择“no Line”(无行)来实现同样的效果,再次手动执行。当我点击No Line时,它只会闪烁一秒钟,但保持实线设置。如果我第二次单击“无行”,它会像您所期望的那样消失

它就像是通过手动轻推格式设置来释放某些内容

我有一种感觉,这与边界和一些遗留问题有关。就像这条线在它作为一个区域的生命结束后有了边界一样,它再也不一样了。我认为从一个区域变换后得到的线对象可能是野餐后的几个三明治。。。 我认为它必须默认为2003类型的format对象,但我不知道如何管理它

我正在windows 7上使用excel 2013

我检查了该行是否设置为可见,我还注意到,与图表上另一行(未转换为原始类型)上的true相比,有问题的行上的Format.Fill.visible是msoFalse

我一直在使用类模块管理所有图表,包括:

Property Let sType(SeriesType As Long)
    With CurrChart.SeriesCollection(Indx)
        .Type = SeriesType
    End With
End Property

Public Sub noMarkers()
    With CurrChart.SeriesCollection(Indx)
        .MarkerStyle = xlMarkerStyleNone
    End With
End Sub


Property Let LineWeight(w)

With CurrChart.SeriesCollection(Indx)
    .Format.Line.Weight = w
End With
End Property

Property Let LineVisible(v)
With CurrChart.SeriesCollection(Indx)
    .Format.Line.Visible = v
End With
End Property
如上所述,在我做出这一点之前,一切都进展得相当顺利。 我确信我在做一些愚蠢的事情,所以我希望有人能提出一个前进的方向

如果有人有枚举序列对象的代码,这将有助于我将序列中有效和无效的差异制成表格并进行比较


如果您有任何建议,我们将不胜感激。

5小时睡眠能为您带来的好处真是太神奇了

问题是由于在还原为XLline类型时未正确设置series.Border和series.Format.Line.Visible属性造成的

我关闭了区域模式的线路可见性,而在恢复到线路时没有重新打开。当恢复到线型时,我还必须设置series.Border.LineStyle=xlNone(XLHairline也可以)。边框已打开,这是更改为XLArea类型的副作用

我看到的线条是系列边框,它位于实际线条的顶部并使其模糊。因此,当我修改基础行的属性时,没有可见的更改

导致问题的边框属性未记录在MSDN的联机文档中,并且在VBE中可用对象的下拉列表中不可见。 我想这是一个需要解决的遗留难题