vba图表的dynamic数据范围

下面提到的代码工作正常。 但是,我的查询是:—目前我有input数据表值从A1到P4,但它可以改变:例如,数据值可以从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 

尝试下面的代码。 这将从活动select创build图表

 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