Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Array of UDT

Thanks Andy.

"Andy Pope" wrote:

I would image because the returned value is actual coerced in to a
variant when you use ?

Cheers
Andy

justahelper wrote:
What I typed in the immediate window was this:

?GetReaderRecordsArray(1).r_name

"Andy Pope" wrote:


Did you, and if so how, define the return variable as being an array
within the immediate window?

Cheers
Andy

justahelper wrote:

Hi Andy,

That's strange. I spent hours looking at the result in the immediate window
and could not figure out why it didn't work. I never bothered to try calling
it from another routine because I didn't have any success in the immediate
window. I wonder though why it fails there.

"Andy Pope" wrote:



Hi,

This revised and shortened code works for me.
Apart from the return type reader instead of readers, which others have
pointed out. I guess the main problem is with the declaration of the
variable in the calling routine. In this case the xyz array.
You do not show this code by either you have declared it as variant or
not declared it's type so it is defaulting to variant.

Type reader
r_sname As String
r_name As String
r_restel As String
r_offtel As String
r_mobile As String
End Type
Sub Test()

Dim xyz() As reader

xyz = GetReaderRecordsArray(Range("A1"))

Debug.Print xyz(1).r_name
Debug.Print xyz(10).r_name

End Sub
Function GetReaderRecordsArray(rngTimeCell As Range) As reader()

Dim u_readers() As reader

ReDim u_readers(10)

u_readers(1).r_name = "Test1"
u_readers(10).r_name = "Test10"

GetReaderRecordsArray = u_readers

End Function


Cheers
Andy



justahelper wrote:


XL version - 2003 (11.5612.5606) Part of Microsoft Office Professional
Edition 2003
VBA - Micorsoft Visual Basic 6.3

The function is in a normal module.

I have written this piece of code. I also have the function for
GetReaderRecord in the same module. If I change the return value to just
reader and not reader()
and assign the return value as
GetReaderRecordsArray = u_readers(1)
the function works fine and returns the correct value. Also in break mode I
can see not all the items in the array.

Question is - why does it fail when I change the return value to an array?

"Tushar Mehta" wrote:




You still haven't answered the first question.

Also, where -- what kind of module(s), that is -- do you have all this code?

And, did you write the code or did you get it from somewhere else?

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article ,
says...



I changed it as suggested. It gives the error:

Only user-defined types defined in public object modules can be coerced to
or from a variant or passed to late-bound functions.

"Tushar Mehta" wrote:




What version of XL / VBA are you using?

Does the compiler highlight a particular line as the offending line?

At the very least you should change the return type of the function from
readers() to reader()

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article ,
says...



I have defined the following:
Type reader
r_sname As String
r_name As String
r_restel As String
r_offtel As String
r_mobile As String
End Type

and am trying to use it in the following function:

Function GetReaderRecordsArray(rngTimeCell As Range) As readers()
Dim rngCommRng As Range
Dim u_readers() As reader
Dim bCommArr() As Boolean
Dim i As Integer
Dim j As Integer
Dim c_comm As Integer

Set rngCommRng = GetCommitRng(rngTimeCell)
bCommArr = GetCommFromCommitRng(rngCommRng)
c_comm = GetYesCountFromCommRng(bCommArr)

If c_comm 0 Then
ReDim u_readers(c_comm)

i = 0

For j = LBound(bCommArr) To UBound(bCommArr)
If bCommArr(j) Then
i = i + 1
u_readers(i) = GetReaderRecord(rngCommRng.Cells(j, 1))
Else
End If
Next j
End If
GetReaderRecordsArray = u_readers

End Function

I get a compile error msg. Can anyone help me fix this?



--

Andy Pope, Microsoft MVP - Excel
http://www.andypope.info



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
Complex conditional summing - array COUNT works, array SUM gives#VALUE fatcatfan Excel Worksheet Functions 4 November 18th 09 06:41 PM
Prevent cell/array references from changing when altering/moving thecell/array nme Excel Discussion (Misc queries) 1 September 19th 08 01:53 PM
meaning of : IF(Switch; Average(array A, array B); array A) DXAT Excel Worksheet Functions 1 October 24th 06 06:11 PM
Array problem: Key words-Variant Array, single-element, type mismatch error davidm Excel Programming 6 November 9th 05 05:54 AM
Array problem: Key words-Variant Array, single-element, type mismatch error davidm Excel Programming 1 November 8th 05 04:21 AM


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

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"