我找到了参考的解决方案整行/列 or a 单细胞在表内(例如ListObject Excel 表格的 VBA 指南 https://stackoverflow.com/a/43541508/8345185),但没有具体的范围。
示例:Table1 的 DataBodyRange 为 3 列和 10 行,我需要绘制每列中第 4-10 行的数据(以编程方式,因为该表是动态的,我希望能够重新绘制该图,如果列添加/删除)。
我希望语法是这样的
Sub reDrawChart()
Set sourcedata = ActiveSheet.ListObjects("Table1")
Set cht = Worksheets("Sheet1").ChartObjects(1).Chart
'Delete existing series
cht.ChartArea.ClearContents
'Add new series
With cht.SeriesCollection.NewSeries
For i = 1 To nColumns
.Name = sourcedata.HeaderRowRange(i)
.Values = sourcedata.DataBodyRange(4:10, i) '<-- Touble spot
Next i
End With
End Sub
但这是行不通的。有没有办法可以用这一行来做我想做的事情?我应该解决这个问题并寻求不同的解决方案吗?
我还想避免使用 .Select,因为在 Mac OS 上,感觉任何使 VBA 口吃的代码都有 50/50 的机会崩溃到桌面。
尝试这个循环而不是你的循环:
For i = 1 To sourceData.ListColumns.count
With cht.SeriesCollection.NewSeries
.name = sourceData.ListColumns(i).name
.values = sourceData.ListColumns(i).DataBodyRange. _
Offset(3).Resize(sourceData.ListRows.count - 3)
End With
Next i
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)