[英]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.