+ Reply to Thread
Results 1 to 2 of 2

Define a chart using VBA

  1. #1
    Registered User
    Join Date
    09-26-2005
    Posts
    12

    Define a chart using VBA

    Hi folks,
    I'm baffled- I'm writing a macro to pull a data table into an excel sheet & create a bargraph of those results. The number of records in the data table are variable (say between 2 and 50).

    I'm trying to define a dynamic bar graph using VBA. The X values are in col C and the text Y vlaues are in col A. (both start in row 3) The values in column B are necessary, but have nothing to do with the graph. I'm having trouble using variables to define the source data as two, non adjacent ranges.

    I've had problems just including the 50 cells in the data table as it includes blank
    spaces in the chart.

    The code below builds the graph based on the X values starting in cell C3. It just numbers them on the Y axis, not by the corresponding text values....

    Any ideas?
    Thanks
    pim

    Dim sheetName as String 'name of the sheet where the data table
    Dim NoRec As Double 'Number of records returned in query
    Dim Graph As ChartObject 'Bar graph

    NoRec = Application.WorksheetFunction.CountA(Columns("A:A"))
    Set Graph = ActiveSheet.ChartObjects.Add _
    (Left:=285, Width:=548, Top:=40, Height:=825)
    Graph.Chart.SetSourceData Source:=Sheets(sheetName).Range(Cells(3, 3), Cells(NoRec, 3))

    Graph.Chart.ChartType = xlBarClustered
    ActiveSheet.ChartObjects(1).Activate

    ActiveChart.HasLegend = False
    ActiveChart.HasTitle = False
    With ActiveChart.ChartGroups(1)
    .Overlap = 0
    .GapWidth = 140
    .HasSeriesLines = False
    End With
    With ActiveChart.ChartGroups(1)
    .Overlap = 0
    .GapWidth = 140
    .HasSeriesLines = False
    End With
    'Y axis- text names format
    With ActiveChart.Axes(xlCategory)
    .CrossesAt = 1
    .TickLabelSpacing = 1
    .TickMarkSpacing = 1
    .AxisBetweenCategories = True
    .ReversePlotOrder = True
    .MajorTickMark = xlOutside
    .MinorTickMark = xlNone
    .TickLabelPosition = xlLow
    End With
    'X axis-PI values Format
    With ActiveChart.Axes(xlValue)
    .TickLabelPosition = xlHigh
    End With
    ActiveChart.PlotArea.Select
    With Selection.Border
    .ColorIndex = 16
    .Weight = xlThin
    .LineStyle = xlContinuous
    End With

  2. #2
    Registered User
    Join Date
    09-26-2005
    Posts
    12
    i got it- thanks guys!

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1