View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Ömer Ayzan Ömer Ayzan is offline
external usenet poster
 
Posts: 13
Default Property Get with argument

Hi Rob,

I worked that way. My mistake was to try to dimension the TagName property.

Thanks alot,

Ömer


"Rob Bovey" wrote in message
...
Hi Ömer,

Even knowing that you're trying to create a property Get, I'm not sure
what the problem is. Let me propose a very basic example based on what

your
original code:

---------
In Class1
---------
Option Explicit

Private ParsedData() As String

Private Sub Class_Initialize()
Dim lCount As Long
ReDim ParsedData(1 To 10) As String
For lCount = 1 To 10
ParsedData(lCount) = "Item " & CStr(lCount)
Next lCount
End Sub

Public Property Get TagName(ByVal intI As Integer)
TagName = ParsedData(intI)
End Property

-------------
In Module 1
-------------
Sub Test()
Dim clsTest As Class1
Set clsTest = New Class1
Debug.Print clsTest.TagName(3)
Set clsTest = Nothing
End Sub

Running the Test sub prints out the value "Item 3" in the immediate

window,
which is what I would expect. What is the conceptual difference between

this
code and what you're trying to do in your application?

--
Rob Bovey, MCSE, MCSD, Excel MVP
Application Professionals
http://www.appspro.com/

* Please post all replies to this newsgroup *
* I delete all unsolicited e-mail responses *


"Ömer Ayzan" wrote in message
...
Rob thank you for your answer.
Actually I have a parse method which finds out how many tags there are
within the file opened and then loads them into a 1 by n array. In the

first
dimension the tag name is kept, and in the second the tag value. TagName

and
TagValue are read only properties. So I can't use a property let

statement.
Do you think I should use a collection?

Thanking in advance.
Ömer

"Rob Bovey" wrote in message
...
Hi Ömer,

The TagName property is a single value, not an array. The way you

have
it defined (which I think is what you want) is that the desired array

index
is passed in and the single value from that array is returned. In that

case
it should work if modified as follows:

Public Property Let TagName(ByVal intI As Integer)
TagName = ParsedData(intI)
End Property

This assumes that ParsedData is a valid array and that intI is a valid

index
into that array.

--
Rob Bovey, MCSE, MCSD, Excel MVP
Application Professionals
http://www.appspro.com/

* Please post all replies to this newsgroup *
* I delete all unsolicited e-mail responses *


"Ömer Ayzan" wrote in message
...
Dear friends,

I am trying to write a class that will parse XML data. I have a

property
called TagName. Since there are many tags I wanted to index them.

Even
though in the syntax of Property Get statement an argument can be

used
when
I attempt to use the following code I get an "Compile error: Can't

assign
to
read-only property." error.

Public Property Let TagName(ByVal intI As Integer)
TagName(intI) = ParsedData(intI)
End Property
Any suggestions are appreciated
Ömer Ayzan