簡體   English   中英

vba圖表的動態數據范圍

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM