matsuit1
08-06-2010, 08:14 PM
Hi,
I'm getting an error when I run my program that says "error method 'minimumscaleisauto' of object 'axes' failed". Everything works just how I want it to but this error box keeps coming up. I have searched for an answer and what everything has said was it is related to the add-ins, but when I tried changing it, the error kept coming up.
Here's where I think the problem is, since when I go to debug, this is where it brings me:
Public Sub CreateChart()
Dim ChartFileName As String
Dim DataRange As String
Dim co As ChartObject
Dim cw As Long, rh As Long
' form for chart MUST be named 'ChartForm'
If (ShowChartInForm) Then
Load ChartForm
End If
' create the range designation based on the user input
DataRange = ConvertCellsToRange(StartRowID, StartColumnID, EndRowID, EndColumnID)
Range(DataRange).Select
'Sheets(ChartSheetName).Select
'MsgBox ActiveSheet.ChartObjects.Count
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects(1).Delete
End If
' Get data for positioning chart
cw = Columns(1).Width
rh = Rows(1).Height
' Position chart using column width and row height units
Set co = ActiveSheet.ChartObjects.Add(cw * LeftOfChart, rh * TopOfChart, cw * WidthOfChart, rh * HeightOfChart)
'Charts.Add
co.Chart.ChartType = xlLine
co.Chart.SetSourceData Source:=Sheets(ChartSheetName).Range(DataRange), PlotBy:=xlColumns
ActiveSheet.Select
'Sheets(ChartSheetName).Select
co.Chart.Location Where:=xlLocationAsObject, Name:=ChartSheetName
With co.Chart
If (ChartTitle <> "") Then
.HasTitle = True
.ChartTitle.Characters.Text = ChartTitle
End If
If (XAxisTitle <> "") Then
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = XAxisTitle
End If
If (YAxisTitle <> "") Then
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = YAxisTitle
End If
End With
With co.Chart.Axes(xlCategory)
.HasMajorGridlines = VerticalGridlinesShown
.HasMinorGridlines = False
End With
With co.Chart.Axes(xlValue)
.HasMajorGridlines = HorizontalGridlinesSHown
.HasMinorGridlines = False
End With
co.Chart.SetSourceData Source:=Sheets(ChartSheetName).Range(DataRange), PlotBy:=xlColumns
co.Chart.PlotArea.Select
co.Chart.PlotArea.Interior.ColorIndex = xlNone
If (Not AxisBoxShown) Then
co.Chart.PlotArea.Border.Color = vbWhite
End If
co.Chart.HasLegend = True
co.Chart.Axes(xlCategory).Select
With co.Chart.Axes(xlCategory)
If (XAxisMin > XAxisMax) Then
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
Else
.MinimumScale = XAxisMin
.MaximumScale = XAxisMax
End If
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
If (XValueOfIntersection = 987654321) Then
.Crosses = xlAutomatic
Else
.Crosses = xlCustom
.CrossesAt = XValueOfIntersection
End If
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
co.Chart.Axes(xlValue).Select
With co.Chart.Axes(xlValue)
If (YAxisMin > YAxisMax) Then
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
Else
.MinimumScale = YAxisMin
.MaximumScale = YAxisMax
End If
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
If (YValueOfIntersection = 987654321) Then
.Crosses = xlAutomatic
Else
.Crosses = xlCustom
.CrossesAt = YValueOfIntersection
End If
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
If (ShowChartInForm) Then
' the Picture control is used to show the Chart
ChartForm.Image1.Width = ChartForm.Width
ChartForm.Image1.Height = ChartForm.Height - 22
co.Chart.Parent.Width = ChartForm.Image1.Width
co.Chart.Parent.Height = ChartForm.Image1.Height
' Save chart as GIF
ChartFileName = ThisWorkbook.Path & Application.PathSeparator & "VBAChart!^@%#$.gif"
co.Chart.Export Filename:=ChartFileName, FilterName:="GIF"
' Show the chart
ChartForm.Image1.Picture = LoadPicture(ChartFileName)
' delete the temporary chart image file
Kill ChartFileName
' delete the chart from the spreadsheet
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects(1).Delete
End If
End If
' form for chart MUST be named 'ChartForm'
If (ShowChartInForm) Then
ChartForm.Show
End If
End Sub
I'm really confused, I've tried changing the add-ins, and changing the "minimumscalisauto" value to false and nothing changes.
Thank you
I'm getting an error when I run my program that says "error method 'minimumscaleisauto' of object 'axes' failed". Everything works just how I want it to but this error box keeps coming up. I have searched for an answer and what everything has said was it is related to the add-ins, but when I tried changing it, the error kept coming up.
Here's where I think the problem is, since when I go to debug, this is where it brings me:
Public Sub CreateChart()
Dim ChartFileName As String
Dim DataRange As String
Dim co As ChartObject
Dim cw As Long, rh As Long
' form for chart MUST be named 'ChartForm'
If (ShowChartInForm) Then
Load ChartForm
End If
' create the range designation based on the user input
DataRange = ConvertCellsToRange(StartRowID, StartColumnID, EndRowID, EndColumnID)
Range(DataRange).Select
'Sheets(ChartSheetName).Select
'MsgBox ActiveSheet.ChartObjects.Count
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects(1).Delete
End If
' Get data for positioning chart
cw = Columns(1).Width
rh = Rows(1).Height
' Position chart using column width and row height units
Set co = ActiveSheet.ChartObjects.Add(cw * LeftOfChart, rh * TopOfChart, cw * WidthOfChart, rh * HeightOfChart)
'Charts.Add
co.Chart.ChartType = xlLine
co.Chart.SetSourceData Source:=Sheets(ChartSheetName).Range(DataRange), PlotBy:=xlColumns
ActiveSheet.Select
'Sheets(ChartSheetName).Select
co.Chart.Location Where:=xlLocationAsObject, Name:=ChartSheetName
With co.Chart
If (ChartTitle <> "") Then
.HasTitle = True
.ChartTitle.Characters.Text = ChartTitle
End If
If (XAxisTitle <> "") Then
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = XAxisTitle
End If
If (YAxisTitle <> "") Then
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = YAxisTitle
End If
End With
With co.Chart.Axes(xlCategory)
.HasMajorGridlines = VerticalGridlinesShown
.HasMinorGridlines = False
End With
With co.Chart.Axes(xlValue)
.HasMajorGridlines = HorizontalGridlinesSHown
.HasMinorGridlines = False
End With
co.Chart.SetSourceData Source:=Sheets(ChartSheetName).Range(DataRange), PlotBy:=xlColumns
co.Chart.PlotArea.Select
co.Chart.PlotArea.Interior.ColorIndex = xlNone
If (Not AxisBoxShown) Then
co.Chart.PlotArea.Border.Color = vbWhite
End If
co.Chart.HasLegend = True
co.Chart.Axes(xlCategory).Select
With co.Chart.Axes(xlCategory)
If (XAxisMin > XAxisMax) Then
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
Else
.MinimumScale = XAxisMin
.MaximumScale = XAxisMax
End If
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
If (XValueOfIntersection = 987654321) Then
.Crosses = xlAutomatic
Else
.Crosses = xlCustom
.CrossesAt = XValueOfIntersection
End If
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
co.Chart.Axes(xlValue).Select
With co.Chart.Axes(xlValue)
If (YAxisMin > YAxisMax) Then
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
Else
.MinimumScale = YAxisMin
.MaximumScale = YAxisMax
End If
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
If (YValueOfIntersection = 987654321) Then
.Crosses = xlAutomatic
Else
.Crosses = xlCustom
.CrossesAt = YValueOfIntersection
End If
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
If (ShowChartInForm) Then
' the Picture control is used to show the Chart
ChartForm.Image1.Width = ChartForm.Width
ChartForm.Image1.Height = ChartForm.Height - 22
co.Chart.Parent.Width = ChartForm.Image1.Width
co.Chart.Parent.Height = ChartForm.Image1.Height
' Save chart as GIF
ChartFileName = ThisWorkbook.Path & Application.PathSeparator & "VBAChart!^@%#$.gif"
co.Chart.Export Filename:=ChartFileName, FilterName:="GIF"
' Show the chart
ChartForm.Image1.Picture = LoadPicture(ChartFileName)
' delete the temporary chart image file
Kill ChartFileName
' delete the chart from the spreadsheet
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects(1).Delete
End If
End If
' form for chart MUST be named 'ChartForm'
If (ShowChartInForm) Then
ChartForm.Show
End If
End Sub
I'm really confused, I've tried changing the add-ins, and changing the "minimumscalisauto" value to false and nothing changes.
Thank you