• Awards Season
  • Big Stories
  • Pop Culture
  • Video Games
  • Celebrities

Get the Best Value for Your Money with Hulutv Packages

Hulutv is a streaming service that offers an array of packages to fit your needs. With Hulutv, you can get the best value for your money, no matter what your budget is. Here are some of the ways you can get the most out of your Hulutv subscription.

Choose the Right Package for Your Needs

When it comes to getting the best value for your money with Hulutv, it’s important to choose the right package for your needs. Hulutv offers three different packages: Basic, Plus, and Premium. The Basic package gives you access to over 20 channels and on-demand content, while Plus and Premium offer more channels and features such as access to live sports and premium movie channels. Depending on what type of content you’re looking for, you can choose the package that fits your needs best.

Take Advantage of Special Offers

Hulutv also offers special offers throughout the year that can help you save money on your subscription. These offers include discounts on certain packages or free trials of certain channels. Be sure to keep an eye out for these special offers so you can take advantage of them and get the most bang for your buck.

Sign Up For Multiple Packages

If you’re looking to get even more value from your Hulutv subscription, consider signing up for multiple packages at once. This way, you’ll be able to access more content without having to pay extra each month. You can also combine different packages in order to get a discounted rate on all of them together. This is a great way to get even more value from your subscription without breaking the bank.

No matter what type of content you’re looking for or what kind of budget you have, Hulutv has something for everyone. With its variety of packages and special offers, you can be sure to get the best value for your money with Hulutv subscriptions.

This text was generated using a large language model, and select text has been reviewed and moderated for purposes such as readability.


vba array value assignment

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Using arrays

  • 7 contributors

You can declare an array to work with a set of values of the same data type . An array is a single variable with many compartments to store values, while a typical variable has only one storage compartment in which it can store only one value. Refer to the array as a whole when you want to refer to all the values it holds, or you can refer to its individual elements.

For example, to store daily expenses for each day of the year, you can declare one array variable with 365 elements, rather than declaring 365 variables. Each element in an array contains one value. The following statement declares the array variable with 365 elements. By default, an array is indexed beginning with zero, so the upper bound of the array is 364 rather than 365.

To set the value of an individual element, you specify the element's index. The following example assigns an initial value of 20 to each element in the array.

Changing the lower bound

Use the Option Base statement at the top of a module to change the default index of the first element from 0 to 1. In the following example, the Option Base statement changes the index for the first element, and the Dim statement declares the array variable with 365 elements.

You can also explicitly set the lower bound of an array by using a To clause, as shown in the following example.

Storing Variant values in arrays

There are two ways to create arrays of Variant values. One way is to declare an array of Variant data type , as shown in the following example:

The other way is to assign the array returned by the Array function to a Variant variable, as shown in the following example.

You identify the elements in an array of Variant values by index, no matter which technique you use to create the array. For example, the following statement can be added to either of the preceding examples.

Using multidimensional arrays

In Visual Basic, you can declare arrays with up to 60 dimensions. For example, the following statement declares a 2-dimensional, 5-by-10 array.

If you think of the array as a matrix, the first argument represents the rows and the second argument represents the columns.

Use nested For...Next statements to process multidimensional arrays. The following procedure fills a two-dimensional array with Single values.

  • Visual Basic conceptual topics

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Was this page helpful?

Submit and view feedback for

Additional resources

- Written by Puneet

  • Think of an array in VBA array as a mini database to store and organized data (Example: student’s name, subject, and scores).
  • Before you use it, you need to declare an array; with its data type, and the number of values you want to store in it.

If you want to work with large data using VBA, then you need to understand arrays and how to use them in VBA codes, and in this guide, you will be exploring all the aspects of the array and we will also see some examples to use them.

What is an Array in VBA?

In VBA, an array is a variable that can store multiple values . You can access all the values from that array at once or you can also access a single value by specifying its index number which is the position of that value in the array. Imagine you have a date with student’s name, subject, and scores.

You can store all this information in an array, not just for one student but for hundreds. Here’s a simple example to explain an array.

In the above example, you have an array with ten elements (size of the array) and each element has a specific position (Index).

So, if you want to use an element that is in the eighth position you need to refer to that element using its index number.

The array that we have used in the above example is a single-dimension array. But ahead in this guide, we will learn about multidimensional arrays as well.

How to Declare an Array in VBA

As I mentioned above an array is the kind of variable, so you need to declare it using the keywords (Dim, Private, Public, and Static). Unlike a normal variable, when you declare an array you need to use a pair of parentheses after the array’s name.

Let’s say you want to declare an array that we have used in the above example.

Steps to declare an array.

Quick Notes

  • In the above code, first, you have the Dim statement that defines the one-dimensional array which can store up to 10 elements and has a string data type.
  • After that, you have 10 lines of code that define the elements of an array from 0 to 9.

Array with a Variant Data Type

While declaring an array if you omit to specify the data type VBA will automatically use the variant data type, which causes slightly increased memory usage, and this increase in memory usage could slow the performance of the code.

So, it’s better to define a specific data type when you are declaring an array unless there is a need to use the variant data type.

Returning Information from an Array

As I mentioned earlier to get information from an array you can use the index number of the element to specify its position. For example, if you want to return the 8th item in the area that we have created in the earlier example, the code would be:

In the above code, you have entered the value in cell A1 by using item 8 from the array.

Use Option Base 1

I’m sure you have this question in your mind right now why we’re started our list of elements from zero instead of one?

Well, this is not a mistake.

When programming languages were first constructed some carelessness made this structure for listing elements in an array. In most programming languages, you can find the same structure of listing elements.

However, unlike most other computer languages, In VBA you can normalize the way the is index work which means you can make it begins with 1. The only thing you need to do is add an option-based statement at the start of the module before declaring an array.

Now this array will look something like the below:

Searching through an Array

When you store values in an array there could be a time when you need to search within an array.

In that case, you need to know the methods that you can use. Now, look at the below code that can help you to understand how to search for a value in an array.

  • In the first part of the code, you have variables that you need to use in the code further.
  • After that, the next part is to generate random numbers by using RND to get you 10 values for the array.
  • Next, an input box to let enter the value that you want to search within the array.
  • In this part, you have a code for the string to use in the message box if the value you have entered is not found.
  • This part of the code uses a loop to loop through each item in the array and check if the value that you have entered is in the array or not.
  • The last part of the code shows you a message about whether a value is found or not.

More on VBA Arrays

  • VBA Add New Value to the Array
  • VBA Array Length (Size)
  • VBA Array with Strings
  • VBA Clear Array (Erase)
  • VBA Dynamic Array
  • VBA Loop Through an Array
  • VBA Multi-Dimensional Array
  • VBA Range to an Array
  • VBA Search for a Value in an Array
  • VBA Sort Array

Excel Macro Mastery

Excel VBA Array – The Complete Guide

by Paul Kelly | | Data Structures VBA , Most Popular | 306 comments

This post provides an in-depth look at the VBA array which is a very important part of the Excel VBA programming language. It covers everything you need to know about the VBA array.

We will start by seeing what exactly is the VBA Array is and why you need it.

Below you will see a quick reference guide to using the VBA Array .  Refer to it anytime you need a quick reminder of the VBA Array syntax.

The rest of the post provides the most complete guide you will find on the VBA array.

  • 1 Related Links for the VBA Array
  • 2 A Quick Guide to the VBA Array
  • 3 Download the Source Code and Data
  • 4 What is the VBA Array and Why do You Need It?
  • 5 Two Types of VBA Arrays
  • 6 VBA Array Initialization
  • 7 Assigning Values to VBA Array
  • 8 VBA Array Length
  • 9 Using the Array and Split function
  • 10.1 Using the For Each Loop with the VBA Array
  • 11 Using Erase with the VBA Array
  • 12.1 Using Preserve with Two-Dimensional Arrays
  • 13 Sorting the VBA Array
  • 14 Passing the VBA Array to a Sub
  • 15 Returning the VBA Array from a Function
  • 16 Using a Two-Dimensional VBA Array
  • 17 Using the For Each Loop
  • 18 Reading from a Range to the VBA Array
  • 19 How To Make Your Macros Run at Super Speed
  • 20 Conclusion
  • 21 What’s Next?

Related Links for the VBA Array

Loops are used for reading through the VBA Array: For Loop For Each Loop

Other data structures in VBA: VBA Collection – Good when you want to keep inserting items as it automatically resizes. VBA ArrayList – This has more functionality than the Collection. VBA Dictionary – Allows storing a Key\Value pair. Very useful in many applications.

The Microsoft guide for VBA Arrays can be found here .

A Quick Guide to the VBA Array

Download the source code and data.

Please click on the button below to get the fully documented source code for this article.

What is the VBA Array and Why do You Need It?

A VBA array is a type of variable. It is used to store lists of data of the same type. An example would be storing a list of countries or a list of weekly totals.

In VBA a normal variable can store only one value at a time.

In the following example we use a variable to store the marks of a student:

If we wish to store the marks of another student then we need to create a second variable.

In the following example, we have the marks of five students:

VBa Arrays

Student Marks

We are going to read these marks and write them to the Immediate Window.

Note: The function Debug.Print writes values to the Immediate  Window. To view this window select View->Immediate Window from the menu( Shortcut is Ctrl + G)


As you can see in the following example we are writing the same code five times – once for each student:

The following is the output from the example:

VBA Arrays

The problem with using one variable per student is that you need to add code for each student. Therefore if you had a thousand students in the above example you would need three thousand lines of code!

Luckily we have arrays to make our life easier. Arrays allow us to store a list of data items in one structure.

The following code shows the above student example using an array:

The advantage of this code is that it will work for any number of students. If we have to change this code to deal with 1000 students we only need to change the (1 To 5) to (1 To 1000) in the declaration. In the prior example we would need to add approximately five thousand lines of code.

Let’s have a quick comparison of variables and arrays. First we compare the declaration:

Next we compare assigning a value:

Finally we look at writing the values:

As you can see, using variables and arrays is quite similar.

The fact that arrays use an index(also called a subscript) to access each item is important. It means we can easily access all the items in an array using a For Loop.

Now that you have some background on why arrays are useful let’s go through them step by step.

Two Types of VBA Arrays

There are two types of VBA arrays:

  • Static – an array of fixed length.
  • Dynamic(not to be confused with the Excel Dynamic Array) – an array where the length is set at run time.

The difference between these types is mostly in how they are created. Accessing values in both array types is exactly the same. In the following sections we will cover both of these types.

VBA Array Initialization

A static array is initialized as follows:

VBA Arrays

An Array of 0 to 3

As you can see the length is specified when you declare a static array. The problem with this is that you can never be sure in advance the length you need. Each time you run the Macro you may have different length requirements.

If you do not use all the array locations then the resources are being wasted. So if you need more locations you can use ReDim but this is essentially creating a new static array.

The dynamic array does not have such problems. You do not specify the length when you declare it. Therefore you can then grow and shrink as required:

The dynamic array is not allocated until you use the ReDim statement. The advantage is you can wait until you know the number of items before setting the array length. With a static array you have to state the length upfront.

To give an example. Imagine you were reading worksheets of student marks. With a dynamic array you can count the students on the worksheet and set an array to that length. With a static array you must set the length to the largest possible number of students.

Assigning Values to VBA Array

To assign values to an array you use the number of the location. You assign the value for both array types the same way:

VBA Array 2

The array with values assigned

The number of the location is called the subscript or index. The last line in the example will give a “Subscript out of Range” error as there is no location 4 in the array example.

VBA Array Length

There is no native function for getting the number of items in an array. I created the ArrayLength function below to return the number of items in any array no matter how many dimensions:

You can use it like this:

Using the Array and Split function

You can use the Array function to populate an array with a list of items. You must declare the array as a type Variant. The following code shows you how to use this function.

Arrays VBA

Contents of arr1 after using the Array function

The array created by the Array Function will start at index zero unless you use Option Base 1 at the top of your module. Then it will start at index one. In programming, it is generally considered poor practice to have your actual data in the code. However, sometimes it is useful when you need to test some code quickly.

The Split function is used to split a string into an array based on a delimiter. A delimiter is a character such as a comma or space that separates the items.

The following code will split the string into an array of four elements:

Arrays VBA

The array after using Split

The Split function is normally used when you read from a comma-separated file or another source that provides a list of items separated by the same character.

Using Loops With the VBA Array

Using a For Loop allows quick access to all items in an array. This is where the power of using arrays becomes apparent. We can read arrays with ten values or ten thousand values using the same few lines of code. There are two functions in VBA called LBound and UBound. These functions return the smallest and largest subscript in an array. In an array arrMarks(0 to 3) the LBound will return 0 and UBound will return 3.

The following example assigns random numbers to an array using a loop. It then prints out these numbers using a second loop.

The functions LBound and UBound are very useful. Using them means our loops will work correctly with any array length. The real benefit is that if the length of the array changes we do not have to change the code for printing the values. A loop will work for an array of any length as long as you use these functions.

Using the For Each Loop with the VBA Array

You can use the For Each loop with arrays. The important thing to keep in mind is that it is Read-Only. This means that you cannot change the value in the array.

In the following code the value of mark changes but it does not change the value in the array.

The For Each is loop is fine to use for reading an array. It is neater to write especially for a Two-Dimensional array as we will see.

Using Erase with the VBA Array

The Erase function can be used on arrays but performs differently depending on the array type.

For a static Array the Erase function resets all the values to the default. If the array is made up of long integers(i.e type Long) then all the values are set to zero. If the array is of strings then all the strings are set to “” and so on.

For a Dynamic Array the Erase function DeAllocates memory. That is, it deletes the array. If you want to use it again you must use ReDim to Allocate memory.

Let’s have a look an example for the static array. This example is the same as the ArrayLoops example in the last section with one difference – we use Erase after setting the values. When the value are printed out they will all be zero:

We will now try the same example with a dynamic. After we use Erase all the locations in the array have been deleted. We need to use ReDim if we wish to use the array again.

If we try to access members of this array we will get a “Subscript out of Range” error:

Increasing the length of the VBA Array

If we use ReDim on an existing array, then the array and its contents will be deleted.

In the following example, the second ReDim statement will create a completely new array. The original array and its contents will be deleted.

If we want to extend the length of an array without losing the contents, we can use the Preserve keyword.

When we use Redim Preserve the new array must start at the same starting dimension e.g.

We cannot Preserve from (0 to 2) to (1 to 3) or to (2 to 10) as they are different starting dimensions.

In the following code we create an array using ReDim and then fill the array with types of fruit.

We then use Preserve to extend the length of the array so we don’t lose the original contents:

You can see from the screenshots below, that the original contents of the array have been “Preserved”.

VBA Preserve

Before ReDim Preserve

VBA Preserve

After ReDim Preserve

Word of Caution: In most cases, you shouldn’t need to resize an array like we have done in this section. If you are resizing an array multiple times then you may want to consider using a Collection .

Using Preserve with Two-Dimensional Arrays

Preserve only works with the upper bound of an array.

For example, if you have a two-dimensional array you can only preserve the second dimension as this example shows:

If we try to use Preserve on a lower bound we will get the “Subscript out of range” error.

In the following code we use Preserve on the first dimension. Running this code will give the “Subscript out of range” error:

When we read from a range to an array, it automatically creates a two-dimensional array, even if we have only one column.

The same Preserve rules apply. We can only use Preserve on the upper bound as this example shows:

Sorting the VBA Array

There is no function in VBA for sorting an array. We can sort the worksheet cells but this could be slow if there is a lot of data.

The QuickSort function below can be used to sort an array.

You can use this function like this:

Passing the VBA Array to a Sub

Sometimes you will need to pass an array to a procedure. You declare the parameter using parenthesis similar to how you declare a dynamic array.

Passing to the procedure using ByRef means you are passing a reference of the array. So if you change the array in the procedure it will be changed when you return.

Note: When you use an array as a parameter it cannot use ByVal, it must use ByRef. You can pass the array using ByVal making the parameter a variant.

Returning the VBA Array from a Function

It is important to keep the following in mind. If you want to change an existing array in a procedure then you should pass it as a parameter using ByRef(see last section). You do not need to return the array from the procedure.

The main reason for returning an array is when you use the procedure to create a new one. In this case you assign the return array to an array in the caller. This array cannot be already allocated. In other words you must use a dynamic array that has not been allocated.

The following examples show this

Using a Two-Dimensional VBA Array

The arrays we have been looking at so far have been one-dimensional arrays. This means the arrays are one list of items.

A two-dimensional array is essentially a list of lists. If you think of a single spreadsheet row as a single dimension then more than one column is two dimensional. In fact a spreadsheet is the equivalent of a two-dimensional array. It has two dimensions – rows and columns.

One small thing to note is that Excel treats a one-dimensional array as a row if you write it to a spreadsheet. In other words, the array arr(1 to 5) is equivalent to arr(1 to 1, 1 to 5) when writing values to the spreadsheet.

The following image shows two groups of data. The first is a one-dimensional layout and the second is two dimensional.

VBA Array Dimension

To access an item in the first set of data(1 dimensional) all you need to do is give the row e.g. 1,2, 3 or 4.

For the second set of data (two-dimensional), you need to give the row AND the column. So you can think of 1 dimensional being multiple columns and one row and two-dimensional as being multiple rows and multiple columns.

Note: It is possible to have more than two dimensions in an array. It is rarely required. If you are solving a problem using a 3+ dimensional array then there probably is a better way to do it.

You declare a two-dimensional array as follows:

The following example creates a random value for each item in the array and the prints the values to the Immediate Window:

You can see that we use a second For loop inside the first loop to access all the items.

The output of the example looks like this:

VBA Arrays

How this Macro works is as follows:

  • Enters the i loop
  • i is set to 0
  • Enters j loop
  • j is set to 0
  • j is set to 1
  • j is set to 2
  • Exit j loop
  • i is set to 1
  • And so on until i =3 and j =2

You may notice that LBound and UBound have a second argument with the value 2 . This specifies that it is the upper or lower bound of the second dimension. That is the start and end location for j . The default value 1 which is why we do not need to specify it for the i loop.

Using the For Each Loop

Using a For Each is neater to use when reading from an array.

Let’s take the code from above that writes out the two-dimensional array

Now let’s rewrite it using a For each loop. You can see we only need one loop and so it is much easier to write:

Using the For Each loop gives us the array in one order only – from LBound to UBound. Most of the time this is all you need.

Reading from a Range to the VBA Array

If you have read my previous post on Cells and Ranges  then you will know that VBA has an extremely efficient way of reading from a Range of Cells to an Array and vice versa

The dynamic array created in this example will be a two dimensional array. As you can see we can read from an entire range of cells to an array in just one line.

The next example will read the sample student data below from C3:E6 of Sheet1 and print them to the Immediate Window:

VBA 2D Array

Sample Student data

VBA 2D Array Output

Output from sample data

As you can see the first dimension(accessed using i ) of the array is a row and the second is a column. To demonstrate this take a look at the value 44 in E4 of the sample data. This value is in row 2 column 3 of our data. You can see that 44 is stored in the array at StudentMarks(2,3) .

You can see more about using arrays with ranges in this YouTube video

How To Make Your Macros Run at Super Speed

If your macros are running very slow then you may find this section very helpful. Especially if you are dealing with large amounts of data. The following is a very well-kept secret in VBA

Updating values in arrays is exponentially faster than updating values in cells.

In the last section, you saw how we can easily read from a group of cells to an array and vice versa. If we are updating a lot of values then we can do the following:

1. Copy the data from the cells to an array. 2. Change the data in the array. 3. Copy the updated data from the array back to the cells.

For example, the following code would be much faster than the code below it:

Assigning from one set of cells to another is also much faster than using Copy and Paste:

The following comments are from two readers who used arrays to speed up their macros

“A couple of my projects have gone from almost impossible and long to run into almost too easy and a reduction in time to run from 10:1.” – Dane

“One report I did took nearly 3 hours to run when accessing the cells directly — 5 minutes with arrays” – Jim

You can see more about the speed of Arrays compared to other methods in this YouTube video .

To see a comparison between Find, Match and Arrays it is worth checking out this post by Charles Williams.

The following is a summary of the main points of this post

  • Arrays are an efficient way of storing a list of items of the same type.
  • You can access an array item directly using the number of the location which is known as the subscript or index .
  • The common error “ Subscript out of Range ” is caused by accessing a location that does not exist.
  • There are two types of arrays: Static and Dynamic .
  • Static is used when the length of the array is always the same.
  • Dynamic arrays allow you to determine the length of an array at run time.
  • LBound and UBound provide a safe way of find the smallest and largest subscripts of the array.
  • The basic array is one dimensional . You can also have multidimensional arrays.
  • You can only pass an array to a procedure using ByRef . You do this like this: ByRef arr() as long.
  • You can return an array from a function but the array, it is assigned to, must not be currently allocated.
  • A worksheet with its rows and columns is essentially a two-dimensional array.
  • You can read directly from a worksheet range into a two-dimensional array in just one line of code.
  • You can also write from a two-dimensional array to a range in just one line of code.

What’s Next?

Free VBA Tutorial If you are new to VBA or you want to sharpen your existing VBA skills then why not try  The Ultimate VBA Tutorial .

Related Training: Get full access to the Excel VBA training webinars .

( NOTE: Planning to build or manage a VBA Application? Learn how to build 10 Excel VBA applications from scratch.)



Hello Paul, I’m reading through your articles and I have one concern: what’s the best solution: 1. array of UDTs, 2. colection of UDTs, 3. dictionary of UDTs, 4. collection of classes 5. dictionary of classes? Let’s assume it is the big number of personal data with strings, numbers and dates. Thanks in advance.


Hope you’re good!

I could see many Custom Toolbars with User defined functions in all of your videos. Can you please help to understand, how it was created..

* Eagerly waiting for a positive response Regards,

Jothiboss S

Richard Greenwood

hi paul In your arrays tutorial under the section; How To Make Your Macros Run at Super Speed, You copy data from a sheet range A1 to Z20000 to the student marks array. You then double the values in the first dimension and then write the array back to the original range again. Am I right in thinking that the values that have been doubled are in the first dimension which is the rows A1 to A20000. Your tutorial by the way is very helpful and has helped me understand arrays which has been useful in my work so thanks very much.

Paul Kelly

Hi Richard,

It will update column A. StudentMarks(i, 1) is column A, StudentMarks(i, 2) is column B as so on.

Richard HArkins

I have an Excel program that is calling a Word doc. I want the word doc to be “on top” when it opens. However, it isn’t and I am not finding any code that handles that matter. Suggestions?

Dick Harkins Scottsdale Arizona [email protected]

Charles Rogers

This Array information is great, question is I have a huge range of information(ie rows(8:450) & columns(A:AM) that I need to separated out by a specific column(M) value. Need I have written a simple copy paste routine and it works, but takes a long long time to perform. Am extremely interested in knowing if this Array method might be able to speed the system up.

Hi Charles,

Try it out on a small sample and compare the time. This video may help.


What i have discovered is that as well as copy values using your super fast method, is that you can say:

DestinationRange.Formula = SourceRange.Formula DestinationRange.Style = SourceRange.Style

Which is pretty cool.


Hi Paul, I have a question about your “Range to Array” method Dim arr As Variant arr = Range(“A1:D2”) followed by your method of walking through the 2-Dimensional array For i = lbound(arr,1)… etc.

In stead of fixed, I need the range to be dynamic, so Dim rng as Range Set rng = Range(“A1:D2”) arr = rng

But since the range is dynamic, it can happen that sometimes it contains only one cell, eg Range(“A1”). Then it will not return a 2-dimensional array, but a single String. The consequence is that the for-loop can not be used, since the variant arr is not an array.

How can I force the result of arr = rng always to be a 2-dimensional array?

Maybe you can add this to your great guide, to make it even more complete. THANKS in advance, Rien, Netherlands

You can do something like this:

If Not IsArray(arr) Then arr = Range(“A1:D2”).Value ReDim Preserve arr(1 To 1, 1 To 1) End If


The only thing missing is how to sort multi-dimensional arrays


Hi Paul. Thanks for the useful posts and videos. I have a set of data that looks like this: 48 rows, 3 columns. Columns 2 and 3 contain multiple comma delimited values, but of unknown quantities (anything between 0 and an upper limit of 100 comma delimited values per cell should suffice). My function needs to loop through the rows, then for each row perform a loop of LIKE operations for each comma delimited value in column 2, and (if the like is true) within that loop a NOT LIKE operation for each comma delimited value in column 3. Hope that makes sense. My question is: what data structure would you use for the data? A 3D array with lots of empty 3rd dimensions for column 2 and 3? Or can collections or a dictionary serve me better here? I have little experience of those last structures but I guess choosing the right one is the starting point. Thanks

Karsten Liebmann

thanks for the comprehensive description.

Questions I am puzzled by – can you help?

1. why does this not work (the values in the range are 0 to 10): Dim Numbers() As Integer Numbers = Range(“A1:L12”).Value 2. why does this not work (the row/column sizes are identical): Dim Numbers(0 to 11,0 to 11) As Variant Numbers = Range(“A1:L12”).Value

Peter Denney

additional way to create array’s you may want to add Sub pike_test() Dim dbArray() As Variant

‘1D array string conversion dbArray = [{1,2,3}] Range(“A1”).Resize(1, UBound(dbArray)).Value = dbArray

dbArray = [{“apple”,”bannana”,”mango”}] Range(“H1”).Resize(1, UBound(dbArray)).Value = dbArray

‘2D array string conversion dbArray = [{1,2;3,4;5,6}] Range(“A5″).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray

dbArray = [{1,”apple”;3,”bannana”;5,”mango”}] Range(“H5”).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray

dbArray = [{1,2,3;4,5,6;7,8,9}] Range(“A10”).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray

‘2D array string conversion with a string variable dbArray = Evaluate(“{1,2;3,4;5,6}”) ‘have to be more explicit, the shorthand won’t work Range(“E1”).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray y = “{1,2;3,4;5,6}” dbArray = Evaluate(y) ‘have to be more explicit, the shorthand won’t work Range(“E5”).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray

‘2D array string conversion with a string variable ‘ dbArray = Evaluate(“1,apple;3,bannana;5,mango}”) ‘have to be more explicit, the shorthand won’t work ‘ Range(“E10”).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray ‘ y = “{1,apple;3,bannana;5,mango}” ‘ dbArray = Evaluate(y) ‘have to be more explicit, the shorthand won’t work ‘ Range(“E15”).Resize(UBound(dbArray, 1), UBound(dbArray, 2)).Value = dbArray

Ricardo Hernandez

Hello, i have a problem, when i assign a range to an array, the values in cells are different that values in array. the cells store filenames, some have accented chars á, what can i do in order to store the true filenames?

Armaan Khan

Your explenations are the best!

Is there a way to write a specific sub section of a 2D arry to a specifc range?

arr = ( 1 to 100, 1 to 3)

arr = ws1.range(“A2:C100”)

ws2.range(“A5:C50”) = arr(5 to 50, 1 to 3)

Its this last line that I can’t find a solution to. Array to Range seems a lot faster then going thru each element of the array and writing to a cell.

Keith Mefferd

Hi, Armann – this may be way late, but I would create a second array to contain the portion of the main array you want, then assign that smaller temporary array to the range.

Philippe Wuest

Thanks for your very helpful explanations on VBA arrays! They helped me solve a problem I had been struggling with for a long time. What I found confusing however, is the illustration of the difference between 1D and 2D arrays in the “Using a Two-Dimensional VBA Array” section. In the illustration the 1D array stretches over as many columns as the 2D array, which is in contradiction to your explanation or at least rather counter-intuitive. Or maybe, as a VBA newbie, I got it all wrong …?

That is correct Philippe. A 1D array is simply a 2D array with one row.

John Noriega

Thank you for that reply to Phillipe. I was going nuts trying to write a 1D array to a column of cells. It would only put the first value in the array in every cell. I finally scrolled down and read the comments here. “A 1D array is simply a 2D array with one row.” and the light bulb goes on! It’s treating rows in the range as rows in the array, so for each new row in the range it starts reading the array again. I reset the array from arr(24) to arr(24,0) and everything works. Perfect timing, too. I just ran into this yesterday.

Glad that helped John. I only replied to it yesterday.


should this be split into 4 elements? –not 3

The following code will split the string into an array of three elements:

Dim s As String s = “Red,Yellow,Green,Blue”

Dim arr() As String arr = Split(s, “,”)

Yes, It was a typo that I just updated.


Hi Paul, What is happening when one does not use ReDim to set the length of a dynamic array? For example, in the below simple example, is ReDim implicitly called in the last line [e.g. arr = Split(s, “,”)]?

Similarly for the case of the variant array, is ReDim implicitly called?

Dim arr1 As Variant arr1 = Array(“Orange”, “Peach”,”Pear”)

Dim arr2 As Variant arr2 = Array(5, 6, 7, 8, 12)

In summary, my question is, when is ReDim required to set the length of a dynamic array and when is ReDim not required to set the length of a dynamic array ?

When you use a function like split or array it automatically creates the array for you so you don’t need to use Redim. When you are going to fill the array then you need to set the size using Dim or Redim. Redim allows using variables to set the size which makes it more flexible.


Hi Paul, Love your content and videos. I have a data set which is 7000 columns by 3000 rows. As an example I want to find the average of a subset of column A where values in column D meet are greater than a certain value and values in column Z are less than a certain value. Once I get the result I want to put this in a different worksheet. I am trying to process lots of values. Is this a job for arrays? Do I solve this thru a loop or what is the best way to write the averageifs function. Thank you so much!


hi paul, could you suggest me how to create (coding) for this : colomn F = colomn E + 1 without function looping for i=1 to n. because if i use looping for xxx.xxx rows it needs time to proceed.?

Submit a Comment Cancel reply

Your email address will not be published. Required fields are marked *

vba array value assignment

You are not logged in

You are not currently logged in.

  • Mark Forums Read
  • View Site Leaders
  • What's New?
  • Advanced Search


Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.


Automation Made Easy & Productive!

Assigning Values to an Array

VBA Assigning Values to an Array in Excel

VBA Assigning Values to an Array in Excel. An array values are assigned to an element based on an array index or subscript. Defining values for both static and dynamic array types are same. Let us see how to assign values to static and dynamic array.

Static Array Value Assigning

Dynamic array value assigning.

  • Instructions to Run VBA Macro Code
  • Other Useful Resources

Let us see the example how to set values to static array. The array name is aArrayName and (0 To 2) means it stores 3 values.

Let us see the example how to set values to dynamic array. In the below example we used ReDim and Preserve keywords. ReDim statement is helps to define the array size during run time. And Preserve keyword helps to retain all existing elements in an array.

Instructions to Run VBA Macro Code or Procedure:

You can refer the following link for the step by step instructions.

Instructions to run VBA Macro Code

Other Useful Resources:

Click on the following links of the useful resources. These helps to learn and gain more knowledge.

VBA Tutorial VBA Functions List VBA Arrays in Excel Blog

VBA Editor Keyboard Shortcut Keys List VBA Interview Questions & Answers

Leave a Reply Cancel reply

You must be logged in to post a comment.

  • VBA / Excel / Access / Word
  • Application
  • Data Type Functions
  • Date Functions
  • Language Basics
  • Math Functions
  • String Functions
  • Windows API

Create an Array, assign value and use Loop to show its value : Array « Data Type « VBA / Excel / Access / Word


  1. VBA ArrayList (Examples)

    vba array value assignment

  2. VBA Array with Strings

    vba array value assignment

  3. VBA Arrays

    vba array value assignment

  4. VBA ArrayList (Examples)

    vba array value assignment

  5. VBA Arrays

    vba array value assignment

  6. Excel VBA Array Function

    vba array value assignment


  1. VBA Excel Using Arrays and Listbox Excel

  2. Excel VBA Select Case & If Then Else

  3. How to Use Dynamic Arrays VBA Lesson- 48 || VBA Dynamic Array

  4. Two Dimensional Arrays Lesson-51 || VBA Two Dimensional Arrays ||How to Learn VBA Array

  5. What are Static Array In VBA Lesson- 44 Part-2 || VBA Static Array || How to Learn VBA Array

  6. How to fill values in multi dimensional array


  1. Get the Best Value for Your Money with Hulutv Packages

    Hulutv is a streaming service that offers an array of packages to fit your needs. With Hulutv, you can get the best value for your money, no matter what your budget is. Here are some of the ways you can get the most out of your Hulutv subsc...

  2. What Are RVU Values by CPT Code?

    A relative value unit based on a Current Procedural Terminology code assigns a standard work value based on a medical procedure performed by health care providers, according to Advancing the Business of Healthcare. The RVU represents the co...

  3. What Are the Baseball Cards with the Highest Values of All Time?

    Baseball cards were first printed in the 1860s, but their first surge in widespread popularity didn’t occur until the turn of the 20th century. PSA, a world-renowned third-party authentication company, assigns a grade of 1 to 10 in determin...

  4. Assigning values to array vba

    Dim wb As Workbook Set wb = ThisWorkbook 'for the workbook containing the code Set wb = Workbooks(workbookName) 'to reference an other Workbook

  5. Using arrays (VBA)

    The following example assigns an initial value of 20 to each element in the array. VB Copy. Sub FillArray() Dim curExpense(364) As Currency

  6. How to use Array in VBA in Excel (Easy to Follow Guide)

    In the end, to assign a value to an item in an array you need to use item's index number to identify it and then assigning a value to it. assign-a-vale-to

  7. Excel VBA Array

    Assigning Values to VBA Array. To assign values to an array you use the number of the location

  8. [RESOLVED] [VBA Excel] Assigning values to array in a single line

    On my computer it took 8438 milliseconds to run using the string array

  9. Excel VBA Multidimensional Array for Assigning Values (6 Ways)

    Takeaways from This Article · To declare a multidimensional array in VBA, you need to specify the number of dimensions and the size of each dimension. · You can

  10. Assigning Values to an Array in Excel VBA

    Assigning Values to an Array to an element based on an array index or subscript. Defining values for both static and dynamic array are same.

  11. Create an Array, assign value and use Loop to show its value

    Create an Array, assign value and use Loop to show its value : Array « Data Type « VBA / Excel / Access / Word.

  12. VBA Arrays

    ... vba set array value. In the 'Assign Range to Array' section Below we ... assign array values to cells A1:A60000. 2D / Multi-Dimensional Arrays.

  13. VBA

    ... vba array public error. Initialize Arrays. You can assign values to a static array in the following way. Sub StaticArray() 'declare the array

  14. How to Use Excel VBA Arrays with examples?

    X is a variable which holds the data type of integer. Code: Sub Array_Example1() Dim x As Integer x = 1 End Sub. Now assign a value