Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Chart Position in VB6

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,582
Default Chart Position in VB6

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Chart Position in VB6

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Chart Position in VB6

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,582
Default Chart Position in VB6

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,582
Default Chart Position in VB6

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
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Macro to change position of chart labels on line chart Shane Henderson[_2_] Charts and Charting in Excel 1 May 27th 11 09:31 AM
???How to set chart position Jaylin Excel Programming 9 August 10th 06 07:51 AM
How to set the chart position exactly? ramkumar_cpt Charts and Charting in Excel 1 March 11th 06 01:23 PM
Changing chart title changes position of chart Bing Excel Programming 3 March 9th 05 08:11 AM
Position chart David Excel Programming 5 November 11th 04 01:32 AM


All times are GMT +1. The time now is 08:23 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"