Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 70
Default Please Help: Transferring from Dictionary to Array

Column A in my worksheet contains repetitive values. I have a macro that
creates a dictionary object and loads it with unique values from the column.
When I try to load the dictionary items into an array, its not working out.
The array does not seem to contain any values (as the msgbox function is not
returning anything). The macro is pasted below.

I cant figure out what I'm doing wrong. Any help would be greatly appreciated.

Thank You!

Magnivy

Sub Macro()

Dim rng As Range
Dim x As Dictionary
Dim arr() As Object
Dim Cell As Object
Dim i As Integer
Dim t As Integer


Set rng = ActiveSheet.Range("A1:A500")

Set x = CreateObject("scripting.dictionary")

On Error Resume Next
For Each Cell In rng.Cells
x.Add Item:=Cell.Value, Key:=CStr(Cell.Value)
Next Cell

ReDim arr(1 To x.Count)

i = 0

For Each Item In x.Items
i = 1 + i
arr(i) = Item
Next Item

For t = 1 To UBound(arr, 1)
MsgBox arr(t)
Next t

End Sub
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,290
Default Please Help: Transferring from Dictionary to Array

Using a For Each loop on a Dictionary is a little strange.
It is setup differently and the for/each variable must be a variant or object.
Also, the Items method of the Dictionary returns a zero base variant array.
So it can be dumped directly into a Variant variable....
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware

Sub Macro()
Dim rng As Range
Dim x As Object
Dim arr() As Variant
Dim Cell As Excel.Range
Dim i As Long
Dim t As Long
Dim vKey As Variant

Set rng = ActiveSheet.Range("C1:C50")
Set x = CreateObject("scripting.dictionary")

On Error Resume Next
For Each Cell In rng.Cells
x.Add Item:=Cell.Value, Key:=CStr(Cell.Value)
Next Cell
On Error GoTo 0

ReDim arr(1 To x.Count)
i = 1

For Each vKey In x
arr(i) = x.Item(vKey)
i = 1 + i
Next 'vkey
'For t = 1 To UBound(arr, 1)
MsgBox arr(6)
'Next t


'An alternate method that should be faster then running a loop.
'varArray is zero based.
Dim varArray As Variant
varArray = x.items
MsgBox varArray(5)

End Sub
'------------------


"Magnivy"
wrote in message
Column A in my worksheet contains repetitive values. I have a macro that
creates a dictionary object and loads it with unique values from the column.
When I try to load the dictionary items into an array, its not working out.
The array does not seem to contain any values (as the msgbox function is not
returning anything). The macro is pasted below.
I cant figure out what I'm doing wrong. Any help would be greatly appreciated.
Thank You!
Magnivy

Sub Macro()
Dim rng As Range
Dim x As Dictionary
Dim arr() As Object
Dim Cell As Object
Dim i As Integer
Dim t As Integer


Set rng = ActiveSheet.Range("A1:A500")

Set x = CreateObject("scripting.dictionary")

On Error Resume Next
For Each Cell In rng.Cells
x.Add Item:=Cell.Value, Key:=CStr(Cell.Value)
Next Cell

ReDim arr(1 To x.Count)

i = 0

For Each Item In x.Items
i = 1 + i
arr(i) = Item
Next Item

For t = 1 To UBound(arr, 1)
MsgBox arr(t)
Next t

End Sub
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 70
Default Please Help: Transferring from Dictionary to Array

Works great! Thank you very much for your help Jim!

"Jim Cone" wrote:

Using a For Each loop on a Dictionary is a little strange.
It is setup differently and the for/each variable must be a variant or object.
Also, the Items method of the Dictionary returns a zero base variant array.
So it can be dumped directly into a Variant variable....
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware

Sub Macro()
Dim rng As Range
Dim x As Object
Dim arr() As Variant
Dim Cell As Excel.Range
Dim i As Long
Dim t As Long
Dim vKey As Variant

Set rng = ActiveSheet.Range("C1:C50")
Set x = CreateObject("scripting.dictionary")

On Error Resume Next
For Each Cell In rng.Cells
x.Add Item:=Cell.Value, Key:=CStr(Cell.Value)
Next Cell
On Error GoTo 0

ReDim arr(1 To x.Count)
i = 1

For Each vKey In x
arr(i) = x.Item(vKey)
i = 1 + i
Next 'vkey
'For t = 1 To UBound(arr, 1)
MsgBox arr(6)
'Next t


'An alternate method that should be faster then running a loop.
'varArray is zero based.
Dim varArray As Variant
varArray = x.items
MsgBox varArray(5)

End Sub
'------------------


"Magnivy"
wrote in message
Column A in my worksheet contains repetitive values. I have a macro that
creates a dictionary object and loads it with unique values from the column.
When I try to load the dictionary items into an array, its not working out.
The array does not seem to contain any values (as the msgbox function is not
returning anything). The macro is pasted below.
I cant figure out what I'm doing wrong. Any help would be greatly appreciated.
Thank You!
Magnivy

Sub Macro()
Dim rng As Range
Dim x As Dictionary
Dim arr() As Object
Dim Cell As Object
Dim i As Integer
Dim t As Integer


Set rng = ActiveSheet.Range("A1:A500")

Set x = CreateObject("scripting.dictionary")

On Error Resume Next
For Each Cell In rng.Cells
x.Add Item:=Cell.Value, Key:=CStr(Cell.Value)
Next Cell

ReDim arr(1 To x.Count)

i = 0

For Each Item In x.Items
i = 1 + i
arr(i) = Item
Next Item

For t = 1 To UBound(arr, 1)
MsgBox arr(t)
Next t

End Sub

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
transferring array to range JackRnl Excel Programming 4 August 8th 06 01:13 AM
Problem transferring array data onto worksheet using Resize Ken Johnson Excel Programming 13 December 20th 05 02:05 AM
Transferring part of a multi-dimensional array to a range in VBA Bob J.[_3_] Excel Programming 1 July 27th 05 03:38 PM
dictionary Libby Excel Programming 0 November 15th 04 12:53 PM


All times are GMT +1. The time now is 08:05 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"