Solved

# Transferring Array Contents

Posted on 2013-11-23
Medium Priority
229 Views
Is there a way to transfer the contents of one array to another and still keep the original array?  Here is what I want to do:

``````        For i = 0 To UBound(RaceBibs) - 1
AvailBibArr(k) = RaceBibs(i)
k = k + 1
ReDim Preserve AvailBibArr(k)
Next i
``````

Thanks!
0
Question by:Bob Schneider
• 4
• 3
• 2
• +1

LVL 77

Accepted Solution

GrahamSkan earned 1000 total points
ID: 39671754
Yes. Your code looks OK, but and this is a little simpler and faster:

Sub txarray()
Dim i As Integer
Dim AvailBibArr() As Integer ' ? Same type as RaceBibs

ReDim AvailBibArr(UBound(RaceBibs))
For i = 0 To UBound(RaceBibs)
AvailBibArr(i) = RaceBibs(i)
Next i
End Sub
0

LVL 8

Assisted Solution

Mohit Vijay earned 504 total points
ID: 39671769
ReDim Preserve not require for second array, as you know the size of the array, it will be same as first array, isnt it?

so declare the second array with size initially. apart from that your code looks ok. If you use C# or Visual studio, there are many other generic types and functions available to do this. but it seems you are using VB 6 or older. So your code is fine, except above size initialization.
0

LVL 77

Assisted Solution

GrahamSkan earned 1000 total points
ID: 39671800
VjSoft,

Thank you for the explanation that I omitted.

Actually, there is an even simper solution, which uses the Variant type, which I try to avoid. In that method, you declare the new array as a variant.

``````Sub txarray()
Dim AvailBibArr
Dim RaceBibs(2) As String

RaceBibs(1) = "X"
RaceBibs(0) = "Z"
RaceBibs(2) = "A"
AvailBibArr = RaceBibs

End Sub
``````
0

LVL 8

Assisted Solution

Mohit Vijay earned 504 total points
ID: 39671808
GrahamSkan,

Agree! But this is having performance impact, because at runtime you will decide the size, you dont know the size of array at compile time. Apart from that this is also fine for small type of arrays.
0

Author Comment

ID: 39671811
Semi-related question:  If you have to include different types of data in a multi-dimensional array, do you have to user Variant data type?
0

LVL 77

Assisted Solution

GrahamSkan earned 1000 total points
ID: 39671843
I am always willing to learn, but I believe that all elements in an array, including multi-dimensional arrays must have the same type.
0

LVL 93

Assisted Solution

Patrick Matthews earned 496 total points
ID: 39671912
Graham,

All dimensions of an array must be of the same type, but if you declare the array as type Variant (or omit a specific type in the declaration), then each element will be a variant, and a Variant element can in fact hold any data type.

:)

Patrick
0

Author Comment

ID: 39672637
How do you create an array like, say TestArr(3, 0) that is populated on the fly and data type each element?
0

LVL 93

Assisted Solution

Patrick Matthews earned 496 total points
ID: 39672830
As I wrote above, if you need to accommodate a mix of data types in your array, then declare it as a Variant.  In doing so, you make each element in the array a Variant, and a Variant can store any other data type.
0

LVL 77

Assisted Solution

GrahamSkan earned 1000 total points
ID: 39672835
Patrick,
Thanks for pointing that out. I had forgotten.

BobbaBuoy,
I'm not sure that I understand that query, but here is some code to demonstrate what Patrick has just described.
``````Dim TestArray(3, 0) As Variant
Dim i As Integer

TestArray(0, 0) = 2
TestArray(1, 0) = 1.234
TestArray(2, 0) = TestArray(0, 0) * TestArray(1, 0)
TestArray(3, 0) = "abc"
For i = 0 To 3
Debug.Print TestArray(i, 0)
Next i
``````
0

Author Comment

ID: 39672840
Thanks.  That is good clarification.
0

## Featured Post

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

## Join & Write a Comment Already a member? Login.

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
###### Suggested Courses
Course of the Month14 days, 9 hours left to enroll

#### 597 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.