[英]dynamic data range for vba chart
下面提到的代码正常工作。 但是然后我的查询是:---目前我的输入数据表值从A1到P4,但是它可以更改:例如datavalue可以从A1到S7。 (数据总是在excel表中以A开头),但是在下面给出的代码中,我手动给出了范围。 我需要在范围部分进行哪些更改,以便它可以自动找出列范围?
Sub to_Draw_chart()
Dim ws_InputSheet As String
ws_InputSheet = "Sheet3"
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets(ws_InputSheet).Range(ws_InputSheet & "!$A$1:$P$4"), PlotBy:=xlColumns
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Time_Plotter"
.Axes(xlValue).MaximumScale = 1000
.Axes(xlValue).MajorUnit = 250
.Axes(xlCategory).CategoryType = xlCategoryScale
.Axes(xlCategory).CategoryType = xlAutomatic
End Sub
我使用了ws_InputSheet但As WorkSheet
,我想您会在下面找到更简单的代码:
Option Explicit
Sub to_Draw_chart()
Dim ws_InputSheet As Worksheet, ws_OutputSheet As Worksheet
Dim dataRng As Range
Set ws_InputSheet = ThisWorkbook.Sheets("Sheet3")
With ws_InputSheet
Set dataRng = .Range("A1").CurrentRegion
End With
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=dataRng, PlotBy:=xlColumns
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Time_Plotter"
.Axes(xlValue).MaximumScale = 1000
.Axes(xlValue).MajorUnit = 250
.Axes(xlCategory).CategoryType = xlCategoryScale
.Axes(xlCategory).CategoryType = xlAutomatic
End With
End Sub
尝试这个
Option Explicit
Sub to_Draw_chart()
Dim ws_InputSheet As String, ws_OutputSheet As String
ws_InputSheet = "Sheet3"
Dim dataRng As Range
With Worksheets(ws_InputSheet)
Set dataRng = .Range("A1").CurrentRegion
End With
Charts.Add
ActiveChart.ChartType = xlColumnStacked
' ActiveChart.SetSourceData Source:=Sheets(ws_OutputSheet).Range(ws_InputSheet & "!$A$1:$P$4"), PlotBy:=xlColumns
ActiveChart.SetSourceData Source:=Sheets(ws_OutputSheet).Range(dataRng.Address(True, True, True, True)), PlotBy:=xlColumns
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Time_Plotter"
.Axes(xlValue).MaximumScale = 1000
.Axes(xlValue).MajorUnit = 250
.Axes(xlCategory).CategoryType = xlCategoryScale
.Axes(xlCategory).CategoryType = xlAutomatic
End With
End Sub
试试下面的代码。 这将从活动选择中创建图表
Sub to_Draw_chart()
Dim ws_InputSheet As String
Dim SelRange As Range
Sheets("Sheet3").Activate
Set SelRange = Selection
ws_InputSheet = "Sheet3"
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=SelRange, PlotBy:=xlColumns
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Time_Plotter"
.Axes(xlValue).MaximumScale = 1000
.Axes(xlValue).MajorUnit = 250
.Axes(xlCategory).CategoryType = xlCategoryScale
.Axes(xlCategory).CategoryType = xlAutomatic
End With
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.