繁体   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