Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I'm working in TestPartner, an automation tool that uses VB6, and I either
need to reposition a chart, or change the default position. I've been searching to find a solution, but I can't seem to get it to work... I found this link http://msdn.microsoft.com/newsgroups...=en-us&m=1&p=1 and I think I need to use this code: With ActiveSheet.Shapes("Chart 1") .Left = ActiveCell.Left .Top = ActiveCell.Top End With I don't know how to use the code above in my code below... Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" End Sub Any help is greatly appreciated! |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You need to change the position of the chart object, which is the shape that
contains the chart: Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" With ActiveCell ' or With Worksheets("Graph").Range("C12") objChart.Parent.Left = .Left objChart.Parent.Top = .Top End With End Sub - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions http://PeltierTech.com _______ "jdub765" wrote in message ... I'm working in TestPartner, an automation tool that uses VB6, and I either need to reposition a chart, or change the default position. I've been searching to find a solution, but I can't seem to get it to work... I found this link: http://msdn.microsoft.com/newsgroups...=en-us&m=1&p=1 and I think I need to use this code: With ActiveSheet.Shapes("Chart 1") .Left = ActiveCell.Left .Top = ActiveCell.Top End With I don't know how to use the code above in my code below... Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" End Sub Any help is greatly appreciated! |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks for the reply!
I tried the code you provided: With ActiveCell objChart.Parent.Left = .Left objChart.Parent.Top = .Top End With and while there were no compiling errors, I get runtime errors. When I use ActiveCell, I get Error 91 - Object variable or With block variable not set, and when I use Worksheets("Graph").Range("C12"), I get Error -2147221080 - Method Parent of object _Chart failed. Both fail on objChart.Parent.Left = .Left. I don't really understand how VB handles excel objects so I'm not sure how to fix it. I've been guess & checking for about an hour. Do you have any links that I can read so I can get a better understanding of what's going on? All the searches I've done come up with links that don't really apply to my problem... Thanks a million for the help! "Jon Peltier" wrote: You need to change the position of the chart object, which is the shape that contains the chart: Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" With ActiveCell ' or With Worksheets("Graph").Range("C12") objChart.Parent.Left = .Left objChart.Parent.Top = .Top End With End Sub - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions http://PeltierTech.com _______ "jdub765" wrote in message ... I'm working in TestPartner, an automation tool that uses VB6, and I either need to reposition a chart, or change the default position. I've been searching to find a solution, but I can't seem to get it to work... I found this link: http://msdn.microsoft.com/newsgroups...=en-us&m=1&p=1 and I think I need to use this code: With ActiveSheet.Shapes("Chart 1") .Left = ActiveCell.Left .Top = ActiveCell.Top End With I don't know how to use the code above in my code below... Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" End Sub Any help is greatly appreciated! |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
omg. I found an easy solution.
I found the "Record Macro" function in Excel. lol I clicked on "Relative Reference", moved the chart, and then looked at the resulting code. Then I changed the code a little to fit what I needed and I came up with this: With ActiveSheet.Shapes("Chart 1") .IncrementLeft -25.5 .IncrementTop 50.25 End With And it works!! WOOHOO! Thanks for your help Jon Peltier! It helped me understand what was going on a little more so that I could edit the code ;) |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
IncrementTop and IncrementLeft can have unexpected results, like if the
chart is created in a sheet with a different freeze panes configuration or a window of a different size. Instead of these with relative distances, use ..Top and .Left with absolute references. More info: http://peltiertech.com/Excel/ChartsH...oveAChart.html - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions http://PeltierTech.com _______ "jdub765" wrote in message ... omg. I found an easy solution. I found the "Record Macro" function in Excel. lol I clicked on "Relative Reference", moved the chart, and then looked at the resulting code. Then I changed the code a little to fit what I needed and I came up with this: With ActiveSheet.Shapes("Chart 1") .IncrementLeft -25.5 .IncrementTop 50.25 End With And it works!! WOOHOO! Thanks for your help Jon Peltier! It helped me understand what was going on a little more so that I could edit the code ;) |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You need to prefix ActiveCell with the object variable representing the
Excel application, or: With objChart.Application.ActiveCell - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions http://PeltierTech.com _______ "jdub765" wrote in message ... Thanks for the reply! I tried the code you provided: With ActiveCell objChart.Parent.Left = .Left objChart.Parent.Top = .Top End With and while there were no compiling errors, I get runtime errors. When I use ActiveCell, I get Error 91 - Object variable or With block variable not set, and when I use Worksheets("Graph").Range("C12"), I get Error -2147221080 - Method Parent of object _Chart failed. Both fail on objChart.Parent.Left = .Left. I don't really understand how VB handles excel objects so I'm not sure how to fix it. I've been guess & checking for about an hour. Do you have any links that I can read so I can get a better understanding of what's going on? All the searches I've done come up with links that don't really apply to my problem... Thanks a million for the help! "Jon Peltier" wrote: You need to change the position of the chart object, which is the shape that contains the chart: Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" With ActiveCell ' or With Worksheets("Graph").Range("C12") objChart.Parent.Left = .Left objChart.Parent.Top = .Top End With End Sub - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions http://PeltierTech.com _______ "jdub765" wrote in message ... I'm working in TestPartner, an automation tool that uses VB6, and I either need to reposition a chart, or change the default position. I've been searching to find a solution, but I can't seem to get it to work... I found this link: http://msdn.microsoft.com/newsgroups...=en-us&m=1&p=1 and I think I need to use this code: With ActiveSheet.Shapes("Chart 1") .Left = ActiveCell.Left .Top = ActiveCell.Top End With I don't know how to use the code above in my code below... Private Sub GenerateGraph(objChart As Excel.Chart) objChart.ChartType = xlPie objChart.SetSourceData source:=objSheet.Range("B4:C5"), PlotBy _ :=xlColumns objChart.location Whe=xlLocationAsObject, name:="Graph" End Sub Any help is greatly appreciated! |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Macro to change position of chart labels on line chart | Charts and Charting in Excel | |||
???How to set chart position | Excel Programming | |||
How to set the chart position exactly? | Charts and Charting in Excel | |||
Changing chart title changes position of chart | Excel Programming | |||
Position chart | Excel Programming |