现在我有一个代码可以创建一个新的工作表和表,并将所有收集的数据添加到表中。我想在表格的底部也有一张图表。我使用记录宏来获取编码的基础知识来添加表,问题是数据是不断变化的。列和行根据当天收集的数据量进行扩展和提取。
如何对其进行编码,以便收集的数据也会扩展图表:ActiveChart.SetSourceData Source:=Range("B8:AG8")
和此处:ActiveChart.FullSeriesCollection(1).XValues = "='Master log'!$B$2:$AG$2"
。范围需要能够根据表格数据进行扩展或缩小。
我希望这是有道理的。谢谢!
到目前为止我编写的内容:
intLastCol = Cells(1, 1).End(xlToRight).Column
intLastRow = Cells(1, 1).End(xlDown).Row
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveSheet.Shapes("Chart 4").IncrementLeft -26.25
ActiveSheet.Shapes("Chart 4").IncrementTop 80.25
ActiveChart.SetSourceData Source:=ListObjects("Stats").ListRows(1)
ActiveChart.FullSeriesCollection(1).Name = "=""Continuing Total Stats"""
ActiveChart.FullSeriesCollection(1).XValues = "='Master log'!" & ListObjects("Stats").ListRows(1).Address
答案 0 :(得分:0)
如果是实际的表,您可以在宏中使用ListObject。具体是ListRows Property。
例如,你可以使用这样的东西:
ActiveChart.SetSourceData Source:=ListObjects("TableName").listRows(1)
和
ActiveChart.FullSeriesCollection(1).XValues = "='Master log'!" & ListObjects("TableName").listRows(1).address
您可能需要指定listobject所在的工作表。与sheets("SummarySheet").listobjects("TableName"). ...
假设左上角的大多数单元格是" A1"或换句话说cells(1,1)
并且每次都填充标题,您可以使用它来确定最后一列并将其用作列索引。
intLastCol = cells(1,1).End(xlToRight).column
您可以使用以下行获取一行的范围:
set rngOneRowInRange = range(cells(1,1),cells(1,intLastCol))
注意:您可能(并且可能应该)根据您的情况更改行索引。您想在图表中使用哪一行...
您可以使用ListObjects.Add Method。您必须使用不使用表格部分中描述的类似方法确定表格的整个范围(源参数)。
要确定您可以使用的最后一行
intLastRow = cells(1,1).End(xlDown).row
(这假设列中没有,也绝不会是空白单元格" A")
然后,您可以将我原来提出的解决方案与.listRows(1)
使用表格范围操作图表的语法如下所示:
Sub InsertChart()
Dim shpMyChart As Shape
Dim strRangeAddress As String
Set shpMyChart = ActiveSheet.Shapes.AddChart(xlColumnClustered)
strRangeAddress = Sheets("Master log").ListObjects("Stats").ListRows(1).Range.Address
With shpMyChart
.Name = "MyMacroChart"
.Left = 300
.Top = 150
With .Chart
.SetSourceData Source:=Range("'Master log'!" & strRangeAddress)
.SeriesCollection(1).Name = "=""Continuing Total Stats"""
.SeriesCollection(1).XValues = ("'Master log'!" & strRangeAddress) 'possibly a duplicate of SetSourceData, I'm not sure
End With '.Chart
End With 'shpMyChart
End Sub