+ Reply to Thread
Results 1 to 2 of 2

Chart generation working for certain listbox values, but not all

Hybrid View

  1. #1
    Registered User
    Join Date
    06-27-2012
    Location
    Kansas, United States
    MS-Off Ver
    Excel 2007
    Posts
    7

    Chart generation working for certain listbox values, but not all

    Here's the code I have come up with, I franksteined it from all kinds of different posts online:

    Private Sub CommandButton1_Click()
    Dim WC$
       Dim LR As Long, i As Long
       Dim strName As String
    
       Application.ScreenUpdating = False
    
       Workcenter = ListBox1.Value
       Sheets.Add After:=Sheets(Sheets.Count)
       ActiveSheet.Name = "Zeroes " & Workcenter
       Range("A1").FormulaR1C1 = "Material"
       Range("B1").FormulaR1C1 = "Setup"
       Range("C1").FormulaR1C1 = "Run"
       Range("D1").FormulaR1C1 = "Amort"
       Range("N4").FormulaR1C1 = "Average Setup"
       Range("N5").FormulaR1C1 = "Average Run"
       Range("N6").FormulaR1C1 = "Average Amort"
    
       Sheets("Routings DJL").Activate
    
       With ActiveSheet
           LR = .Range("E" & Rows.Count).End(xlUp).Row
           For i = 1 To LR
               If .Range("E" & i).Value = Workcenter Then
                   .Range("A" & i).Copy
                   Sheets("Zeroes " & Workcenter).Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                   .Range("F" & i).Copy
                   Sheets("Zeroes " & Workcenter).Range("B" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                   .Range("G" & i).Copy
                   Sheets("Zeroes " & Workcenter).Range("C" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                   .Range("H" & i).Copy
                   Sheets("Zeroes " & Workcenter).Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
    
               End If
           Next i
    
       End With
    
        Sheets("Zeroes " & Workcenter).Select
       
      Dim wksConstraints As Worksheet
      Dim rtChart As Chart
      Dim LastRow As Long
      Dim rngOne As Range, rngTwo As Range
      Set wksConstraints = Sheets("Zeroes " & Workcenter)
      LastRow = wksConstraints.Cells(wksConstraints.Rows.Count, "A").End(xlUp).Row
      Set rngOne = wksConstraints.Range("A2:A" & LastRow)
      Set rngTwo = wksConstraints.Range("B2:B" & LastRow)
      Set rtChart = Charts.Add
      rtChart.Location Where:=xlLocationAsNewSheet, Name:="Setup"
      With rtChart
          .Name = "Setup"
          Do Until .SeriesCollection.Count = 0
              .SeriesCollection(1).Delete
          Loop
      End With
      rtChart.SetSourceData Source:=wksConstraints.Range( _
          rngOne.Address(False, False) & "," & rngTwo.Address(False, False)), PlotBy:=xlColumns
      With rtChart
          .ChartType = xlXYScatter
          .HasTitle = True
          .ChartTitle.Text = "Setup"
          .Axes(xlCategory, xlPrimary).HasTitle = True
          .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Material"
          .Axes(xlValue, xlPrimary).HasTitle = True
          .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Hours"
      End With
    
    Set wksConstraints = Sheets("Zeroes " & Workcenter)
      LastRow = wksConstraints.Cells(wksConstraints.Rows.Count, "A").End(xlUp).Row
      Set rngOne = wksConstraints.Range("A2:A" & LastRow)
      Set rngTwo = wksConstraints.Range("C2:C" & LastRow)
      Set rtChart = Charts.Add
      rtChart.Location Where:=xlLocationAsNewSheet, Name:="Run"
      With rtChart
          .Name = "Run"
          Do Until .SeriesCollection.Count = 0
              .SeriesCollection(1).Delete
          Loop
      End With
      rtChart.SetSourceData Source:=wksConstraints.Range( _
          rngOne.Address(False, False) & "," & rngTwo.Address(False, False)), PlotBy:=xlColumns
      With rtChart
          .ChartType = xlXYScatter
          .HasTitle = True
          .ChartTitle.Text = "Run"
          .Axes(xlCategory, xlPrimary).HasTitle = True
          .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Material"
          .Axes(xlValue, xlPrimary).HasTitle = True
          .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Hours"
      End With
    
       Application.CutCopyMode = False
       ActiveChart.Location Where:=xlLocationAsObject, Name:="Zeroes " & Workcenter
       Dim RngToCover As Range
       Dim ChtOb As ChartObject
       Set RngToCover = ActiveSheet.Range("E17:L30")
       Set ChtOb = ActiveChart.Parent
       ChtOb.Height = RngToCover.Height ' resize
       ChtOb.Width = RngToCover.Width ' resize
       ChtOb.Top = RngToCover.Top ' reposition
       ChtOb.Left = RngToCover.Left ' reposition
    
       Sheets("Setup").Select
       ActiveChart.Location Where:=xlLocationAsObject, Name:="Zeroes " & Workcenter
           Set RngToCover = ActiveSheet.Range("E2:L15")
       Set ChtOb = ActiveChart.Parent
       ChtOb.Height = RngToCover.Height ' resize
       ChtOb.Width = RngToCover.Width ' resize
       ChtOb.Top = RngToCover.Top ' reposition
       ChtOb.Left = RngToCover.Left ' reposition
    
       Range("O4").FormulaR1C1 = WorksheetFunction.Average(Range("B:B"))
       Range("O5").FormulaR1C1 = WorksheetFunction.Average(Range("C:C"))
       Range("O6").FormulaR1C1 = WorksheetFunction.Average(Range("D:D"))
    
       With Cells
       .WrapText = False
       .EntireColumn.AutoFit
       .EntireRow.AutoFit
    End With
    
    Application.ScreenUpdating = True
    
    End Sub
    Private Sub CommandButton2_Click()
    
       Dim WC$
       Dim LR As Long, i As Long
       Dim strName As String
    
       Application.ScreenUpdating = False
    
       Workcenter = ListBox1.Value
       Sheets.Add After:=Sheets(Sheets.Count)
       ActiveSheet.Name = "No Zeroes " & Workcenter
       Range("A1").FormulaR1C1 = "Material"
       Range("B1").FormulaR1C1 = "Setup"
       Range("C1").FormulaR1C1 = "Run"
       Range("D1").FormulaR1C1 = "Amort"
       Range("N4").FormulaR1C1 = "Average Setup"
       Range("N5").FormulaR1C1 = "Average Run"
       Range("N6").FormulaR1C1 = "Average Amort"
    
       Sheets("Routings DJL").Activate
    
       With ActiveSheet
           LR = .Range("E" & Rows.Count).End(xlUp).Row
           For i = 1 To LR
               If .Range("E" & i).Value = Workcenter And .Range("F" & i).Value > 0 Then
                   .Range("A" & i).Copy
                   Sheets("No Zeroes " & Workcenter).Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                   .Range("F" & i).Copy
                   Sheets("No Zeroes " & Workcenter).Range("B" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                   .Range("G" & i).Copy
                   Sheets("No Zeroes " & Workcenter).Range("C" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                   .Range("H" & i).Copy
                   Sheets("No Zeroes " & Workcenter).Range("D" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
                  
               End If
           Next i
       End With
    
        Sheets("No Zeroes " & Workcenter).Select
     
      Dim wksConstraints As Worksheet
      Dim rtChart As Chart
      Dim LastRow As Long
      Dim rngOne As Range, rngTwo As Range
      Set wksConstraints = Sheets("No Zeroes " & Workcenter)
      LastRow = wksConstraints.Cells(wksConstraints.Rows.Count, "A").End(xlUp).Row
      Set rngOne = wksConstraints.Range("A2:A" & LastRow)
      Set rngTwo = wksConstraints.Range("B2:B" & LastRow)
      Set rtChart = Charts.Add
      rtChart.Location Where:=xlLocationAsNewSheet, Name:="Setup"
      With rtChart
          .Name = "Setup"
          Do Until .SeriesCollection.Count = 0
              .SeriesCollection(1).Delete
          Loop
      End With
      rtChart.SetSourceData Source:=wksConstraints.Range( _
          rngOne.Address(False, False) & "," & rngTwo.Address(False, False)), PlotBy:=xlColumns
      With rtChart
          .ChartType = xlXYScatter
          .HasTitle = True
          .ChartTitle.Text = "Setup"
          .Axes(xlCategory, xlPrimary).HasTitle = True
          .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Material"
          .Axes(xlValue, xlPrimary).HasTitle = True
          .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Hours"
      End With
    
    Set wksConstraints = Sheets("No Zeroes " & Workcenter)
      LastRow = wksConstraints.Cells(wksConstraints.Rows.Count, "A").End(xlUp).Row
      Set rngOne = wksConstraints.Range("A2:A" & LastRow)
      Set rngTwo = wksConstraints.Range("C2:C" & LastRow)
      Set rtChart = Charts.Add
      rtChart.Location Where:=xlLocationAsNewSheet, Name:="Run"
      With rtChart
          .Name = "Run"
          Do Until .SeriesCollection.Count = 0
              .SeriesCollection(1).Delete
          Loop
      End With
      rtChart.SetSourceData Source:=wksConstraints.Range( _
          rngOne.Address(False, False) & "," & rngTwo.Address(False, False)), PlotBy:=xlColumns
      With rtChart
          .ChartType = xlXYScatter
          .HasTitle = True
          .ChartTitle.Text = "Run"
          .Axes(xlCategory, xlPrimary).HasTitle = True
          .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Material"
          .Axes(xlValue, xlPrimary).HasTitle = True
          .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Hours"
      End With
    
       Application.CutCopyMode = False
       ActiveChart.Location Where:=xlLocationAsObject, Name:="No Zeroes " & Workcenter
       Dim RngToCover As Range
       Dim ChtOb As ChartObject
       Set RngToCover = ActiveSheet.Range("E17:L30")
       Set ChtOb = ActiveChart.Parent
       ChtOb.Height = RngToCover.Height ' resize
       ChtOb.Width = RngToCover.Width ' resize
       ChtOb.Top = RngToCover.Top ' reposition
       ChtOb.Left = RngToCover.Left ' reposition
    
       Sheets("Setup").Select
       ActiveChart.Location Where:=xlLocationAsObject, Name:="No Zeroes " & Workcenter
           Set RngToCover = ActiveSheet.Range("E2:L15")
       Set ChtOb = ActiveChart.Parent
       ChtOb.Height = RngToCover.Height ' resize
       ChtOb.Width = RngToCover.Width ' resize
       ChtOb.Top = RngToCover.Top ' reposition
       ChtOb.Left = RngToCover.Left ' reposition
    
       Range("O4").FormulaR1C1 = WorksheetFunction.Average(Range("B:B"))
       Range("O5").FormulaR1C1 = WorksheetFunction.Average(Range("C:C"))
       Range("O6").FormulaR1C1 = WorksheetFunction.Average(Range("D:D"))
    
    With Cells
       .WrapText = False
       .EntireColumn.AutoFit
       .EntireRow.AutoFit
    End With
    
    Application.ScreenUpdating = True
    
    End Sub
    The charts can be generated for some items in the listbox, but not all. If necessary I can post what is in the list box. Any idea why this is happening?

  2. #2
    Registered User
    Join Date
    06-27-2012
    Location
    Kansas, United States
    MS-Off Ver
    Excel 2007
    Posts
    7

    Re: Chart generation working for certain listbox values, but not all

    Forgot to mention, I receive the error on the line

    .ChartTitle.Text = "Setup"

+ 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