我已经编写了一个宏来生成excel中的图形但是我希望在下一个工作表中生成该图形而不是在同一个工作表中。我已将其宏粘贴在其工作正常之下我只是希望它在下一个工作表中。请给我一些解决方案*
Sub LumData1()
If IsEmpty(Range("B2,D2")) = False Then
Range("B:B,D:D,H:H,I:I,J:J,M:M").Select
Range("M1").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets(ActiveSheet.Name).Range( _
"$B:$B,$D:$D,$H:$H,$I:$I,$J:$J,$M:$M" _
)
ActiveChart.Location Where:=xlLocationAsObject, Name:=ActiveSheet.Name
With ActiveChart.ChartArea
.Width = 1060
.Height = 420
.Left = 0
End With
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).AxisGroup = 2
ActiveChart.SeriesCollection(5).Select
ActiveChart.SeriesCollection(5).AxisGroup = 2
ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Date"
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Value"
ActiveChart.Axes(xlCategory).TickLabels.Orientation = 45
End If
End Sub
答案 0 :(得分:1)
我的回答不仅包括如何在帖子中解决您的问题,还包括如何以“更清洁”和更安全的方式在VBA中自动定义和设置图表。
最好避免使用select
sum(content = 'test 1') as test_1,
sum(content = 'test 2') as test_2,
sum(content = 'test 3') as test_3
from table_name
where custom_id in (10,9,8,6,5,4,3,2,1);
,ActiveSheet
和Select
。而是始终使用引用的对象,在本例中为ActiveChart
和Worksheets
。 E.g ChartObject
,稍后将其设置为Dim ChtObj As ChartObject
,其中Set ChtObj = ShtCht.ChartObjects.Add(100, 100, 500, 500)
是您创建图表的工作表。
一旦您定义并设置了ShtCht
,就可以使用ChartObject
以及嵌套属性轻松修改其属性,方法是在第一个{{1}下添加With ChtObj
声明。
<强>代码强>
With .Chart.ChartArea
答案 1 :(得分:0)
已编辑他必须制作一张新的表格来承载图表
尽可能坚持你的代码:
删除ActiveChart.Location Where:=xlLocationAsObject, Name:=ActiveSheet.Name
将以下代码放在End if
Dim myChart As Chart: Set myChart = ActiveChart
Worksheets.Add
myChart.Location Where:=xlLocationAsObject, Name:=ActiveSheet.Name