ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Problem with Shape Names containing punctuation (https://www.excelbanter.com/excel-programming/326105-problem-shape-names-containing-punctuation.html)

Peter T

Problem with Shape Names containing punctuation
 
My routine to create an object of multiple shapes fails if any shape name
includes punctuation, eg

"My.Rectangle 1"

Sub TestMultiObject()
Dim cnt As Long, i as Long
Dim ob As Object

With ActiveSheet.Shapes
cnt = .Count
ReDim vArr(1 To cnt)
For i = 1 To cnt 'don't want to use "For Each"
vArr(i) = .Item(i).Name
Next
End With

'fails if any shape Name includes a dot
Set ob = ActiveSheet.DrawingObjects(vArr)

'always works
'Set ob = ActiveSheet.Shapes.Range(vArr)

MsgBox ob.Count
End Sub

I don't know why I have this problem with punctuation in shape names. First
question - does anyone else have same problem, or rather not replicate this
problem.

I have a convoluted reason for not wanting to use the line that "always
works".

Assuming this affects all users/versions, does anyone know how to create a
multiple object at the "DrawingObjects" level that caters for the
possibility of a name including punctuation.

TIA,
Peter T



Carlos Lozano

Problem with Shape Names containing punctuation
 
I have used shapes with names containing punctuation, but never access them
by name in an array. Try accessing by index instead.
Try this:

With ActiveSheet.Shapes
cnt = .Count
ReDim vArr(1 To cnt)
For i = 1 To cnt 'don't want to use "For Each"
'vArr(i) = .Item(i).Name
vArr(i) = i ' Changes to use index instead of name.
Next
End With

'fails if any shape Name includes a dot
Set ob = ActiveSheet.DrawingObjects(vArr)

Carlos Lozano
CAX IT Services
www.caxonline.net

"Peter T" wrote:

My routine to create an object of multiple shapes fails if any shape name
includes punctuation, eg

"My.Rectangle 1"

Sub TestMultiObject()
Dim cnt As Long, i as Long
Dim ob As Object

With ActiveSheet.Shapes
cnt = .Count
ReDim vArr(1 To cnt)
For i = 1 To cnt 'don't want to use "For Each"
vArr(i) = .Item(i).Name
Next
End With

'fails if any shape Name includes a dot
Set ob = ActiveSheet.DrawingObjects(vArr)

'always works
'Set ob = ActiveSheet.Shapes.Range(vArr)

MsgBox ob.Count
End Sub

I don't know why I have this problem with punctuation in shape names. First
question - does anyone else have same problem, or rather not replicate this
problem.

I have a convoluted reason for not wanting to use the line that "always
works".

Assuming this affects all users/versions, does anyone know how to create a
multiple object at the "DrawingObjects" level that caters for the
possibility of a name including punctuation.

TIA,
Peter T




Peter T

Problem with Shape Names containing punctuation
 
Hi Carlos,

That's great, and so simple !

Thanks,
Peter T

"Carlos Lozano" wrote in message
...
I have used shapes with names containing punctuation, but never access

them
by name in an array. Try accessing by index instead.
Try this:

With ActiveSheet.Shapes
cnt = .Count
ReDim vArr(1 To cnt)
For i = 1 To cnt 'don't want to use "For Each"
'vArr(i) = .Item(i).Name
vArr(i) = i ' Changes to use index instead of name.
Next
End With

'fails if any shape Name includes a dot
Set ob = ActiveSheet.DrawingObjects(vArr)

Carlos Lozano
CAX IT Services
www.caxonline.net

"Peter T" wrote:

My routine to create an object of multiple shapes fails if any shape

name
includes punctuation, eg

"My.Rectangle 1"

Sub TestMultiObject()
Dim cnt As Long, i as Long
Dim ob As Object

With ActiveSheet.Shapes
cnt = .Count
ReDim vArr(1 To cnt)
For i = 1 To cnt 'don't want to use "For Each"
vArr(i) = .Item(i).Name
Next
End With

'fails if any shape Name includes a dot
Set ob = ActiveSheet.DrawingObjects(vArr)

'always works
'Set ob = ActiveSheet.Shapes.Range(vArr)

MsgBox ob.Count
End Sub

I don't know why I have this problem with punctuation in shape names.

First
question - does anyone else have same problem, or rather not replicate

this
problem.

I have a convoluted reason for not wanting to use the line that "always
works".

Assuming this affects all users/versions, does anyone know how to create

a
multiple object at the "DrawingObjects" level that caters for the
possibility of a name including punctuation.

TIA,
Peter T







All times are GMT +1. The time now is 01:35 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com