#1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 441
Default Slow code

I am using Office 2003 on Windows XP.

My code places a graphic on a spreadsheet in the upper left corner of the
screen. I need code that will resize this image so that it will be as large
as possible, yet not go off my visible range (row 30 by column 12) - please
note that this is only used by me so the size will be constant.

I wrote a sub to do this resizing, as shown below, however, this program
runs very slowly, I can see each incremental size change. I would have
expected this to run pretty fast. Does anyone have a function that will speed
this up?

Sub Test_Image_Resize_2()

Dim oItem As Picture
Dim lHigh As Long
Dim lWide As Long
Set oItem = Selection
Do
lHigh = oItem.Height - 1
lWide = oItem.Width - 1
oItem.Height = lHigh
oItem.Width = lWide
If oItem.BottomRightCell.Row <= 30 And oItem.BottomRightCell.Column <=
12 Then Exit Do
Loop
End Sub

Thanks much for your example code.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default Slow code

why not something like
set rng = Range("A1:L30") ' or whatever your range is

oitem.Height = rng.Height
oitem.Width = rng.Width

You can get the visible range with

set rng = Activewindow.VisibleRange

--
Regards,
Tom Ogilvy


"quartz" wrote:

I am using Office 2003 on Windows XP.

My code places a graphic on a spreadsheet in the upper left corner of the
screen. I need code that will resize this image so that it will be as large
as possible, yet not go off my visible range (row 30 by column 12) - please
note that this is only used by me so the size will be constant.

I wrote a sub to do this resizing, as shown below, however, this program
runs very slowly, I can see each incremental size change. I would have
expected this to run pretty fast. Does anyone have a function that will speed
this up?

Sub Test_Image_Resize_2()

Dim oItem As Picture
Dim lHigh As Long
Dim lWide As Long
Set oItem = Selection
Do
lHigh = oItem.Height - 1
lWide = oItem.Width - 1
oItem.Height = lHigh
oItem.Width = lWide
If oItem.BottomRightCell.Row <= 30 And oItem.BottomRightCell.Column <=
12 Then Exit Do
Loop
End Sub

Thanks much for your example code.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 441
Default Slow code

Tom,

I like the direct approach, but unfortunately, it also distorts some of the
images - they are not uniform in size...

I got much better performance setting ScreenUpdating to false, but any
further ideas?

"Tom Ogilvy" wrote:

why not something like
set rng = Range("A1:L30") ' or whatever your range is

oitem.Height = rng.Height
oitem.Width = rng.Width

You can get the visible range with

set rng = Activewindow.VisibleRange

--
Regards,
Tom Ogilvy


"quartz" wrote:

I am using Office 2003 on Windows XP.

My code places a graphic on a spreadsheet in the upper left corner of the
screen. I need code that will resize this image so that it will be as large
as possible, yet not go off my visible range (row 30 by column 12) - please
note that this is only used by me so the size will be constant.

I wrote a sub to do this resizing, as shown below, however, this program
runs very slowly, I can see each incremental size change. I would have
expected this to run pretty fast. Does anyone have a function that will speed
this up?

Sub Test_Image_Resize_2()

Dim oItem As Picture
Dim lHigh As Long
Dim lWide As Long
Set oItem = Selection
Do
lHigh = oItem.Height - 1
lWide = oItem.Width - 1
oItem.Height = lHigh
oItem.Width = lWide
If oItem.BottomRightCell.Row <= 30 And oItem.BottomRightCell.Column <=
12 Then Exit Do
Loop
End Sub

Thanks much for your example code.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default Slow code

Sub AdjustSize()
Dim oItem As Shape
Set rng = Range("A1:L30")
Set oItem = ActiveSheet.Shapes(1)
oItem.Top = 0
oItem.Left = 0
oItem.LockAspectRatio = True
oItem.Height = rng.Height
If oItem.Width rng.Width Then
oItem.Width = rng.Width
End If
End Sub

Worked for me. No distortion at all.

--
Regards,
Tom Ogilvy


"quartz" wrote:

Tom,

I like the direct approach, but unfortunately, it also distorts some of the
images - they are not uniform in size...

I got much better performance setting ScreenUpdating to false, but any
further ideas?

"Tom Ogilvy" wrote:

why not something like
set rng = Range("A1:L30") ' or whatever your range is

oitem.Height = rng.Height
oitem.Width = rng.Width

You can get the visible range with

set rng = Activewindow.VisibleRange

--
Regards,
Tom Ogilvy


"quartz" wrote:

I am using Office 2003 on Windows XP.

My code places a graphic on a spreadsheet in the upper left corner of the
screen. I need code that will resize this image so that it will be as large
as possible, yet not go off my visible range (row 30 by column 12) - please
note that this is only used by me so the size will be constant.

I wrote a sub to do this resizing, as shown below, however, this program
runs very slowly, I can see each incremental size change. I would have
expected this to run pretty fast. Does anyone have a function that will speed
this up?

Sub Test_Image_Resize_2()

Dim oItem As Picture
Dim lHigh As Long
Dim lWide As Long
Set oItem = Selection
Do
lHigh = oItem.Height - 1
lWide = oItem.Width - 1
oItem.Height = lHigh
oItem.Width = lWide
If oItem.BottomRightCell.Row <= 30 And oItem.BottomRightCell.Column <=
12 Then Exit Do
Loop
End Sub

Thanks much for your example code.

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27
Default Slow code


quartz wrote:
I am using Office 2003 on Windows XP.

My code places a graphic on a spreadsheet in the upper left corner of the
screen. I need code that will resize this image so that it will be as large
as possible, yet not go off my visible range (row 30 by column 12) - please
note that this is only used by me so the size will be constant.

I wrote a sub to do this resizing, as shown below, however, this program
runs very slowly, I can see each incremental size change. I would have
expected this to run pretty fast. Does anyone have a function that will speed
this up?

Sub Test_Image_Resize_2()

Dim oItem As Picture
Dim lHigh As Long
Dim lWide As Long
Set oItem = Selection
Do
lHigh = oItem.Height - 1
lWide = oItem.Width - 1
oItem.Height = lHigh
oItem.Width = lWide
If oItem.BottomRightCell.Row <= 30 And oItem.BottomRightCell.Column <=
12 Then Exit Do
Loop
End Sub

Thanks much for your example code.


Try turning screen updating off. it may just take a while cause it is
waiting for your video card to paint each change
(application.screeenupdating = false) be sure to turn it back on at
the end of the sub

HTH

AR



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 441
Default Slow code

You've done it again Tom! Thanks millions.

"Tom Ogilvy" wrote:

Sub AdjustSize()
Dim oItem As Shape
Set rng = Range("A1:L30")
Set oItem = ActiveSheet.Shapes(1)
oItem.Top = 0
oItem.Left = 0
oItem.LockAspectRatio = True
oItem.Height = rng.Height
If oItem.Width rng.Width Then
oItem.Width = rng.Width
End If
End Sub

Worked for me. No distortion at all.

--
Regards,
Tom Ogilvy


"quartz" wrote:

Tom,

I like the direct approach, but unfortunately, it also distorts some of the
images - they are not uniform in size...

I got much better performance setting ScreenUpdating to false, but any
further ideas?

"Tom Ogilvy" wrote:

why not something like
set rng = Range("A1:L30") ' or whatever your range is

oitem.Height = rng.Height
oitem.Width = rng.Width

You can get the visible range with

set rng = Activewindow.VisibleRange

--
Regards,
Tom Ogilvy


"quartz" wrote:

I am using Office 2003 on Windows XP.

My code places a graphic on a spreadsheet in the upper left corner of the
screen. I need code that will resize this image so that it will be as large
as possible, yet not go off my visible range (row 30 by column 12) - please
note that this is only used by me so the size will be constant.

I wrote a sub to do this resizing, as shown below, however, this program
runs very slowly, I can see each incremental size change. I would have
expected this to run pretty fast. Does anyone have a function that will speed
this up?

Sub Test_Image_Resize_2()

Dim oItem As Picture
Dim lHigh As Long
Dim lWide As Long
Set oItem = Selection
Do
lHigh = oItem.Height - 1
lWide = oItem.Width - 1
oItem.Height = lHigh
oItem.Width = lWide
If oItem.BottomRightCell.Row <= 30 And oItem.BottomRightCell.Column <=
12 Then Exit Do
Loop
End Sub

Thanks much for your example code.

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
Better Way To Do This SLOW code [email protected] Excel Programming 1 January 27th 06 08:24 AM
Slow Code Shawn Excel Programming 7 August 23rd 05 08:44 PM
SLOW Code... Ernst Guckel[_4_] Excel Programming 2 March 20th 05 10:58 AM
Slow Code Frank Kabel Excel Programming 1 July 23rd 04 09:28 AM
Is this slow code? Tom Excel Programming 4 March 3rd 04 11:18 PM


All times are GMT +1. The time now is 03:08 PM.

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

About Us

"It's about Microsoft Excel"