Deleting element in Array

E

ExcelMonkey

I have a 1-D array. A Routine checks the cells in a range
and fills it (based on a test - boolean) with cell
addresses. I want to run a second routine, which checks
this same range and performs another test - boolean. If
the boolean is false and this particular cell address
already exists in the array, then I want to delete its
existence in the array. How do I do this and redimension
the array so that it no longer includes the deleted
elements. THanks


?Array(0)
$A$1
?Array(1)
$A$2
?Array(2)
$A$3

After the second check I would like to see:
?Array(0)
$A$1
?Array(1)
$A$3
 
R

RB Smissaert

If speed is not an issue this might be easier with a collection.
Lookup Collection Object in the VBA help.

RBS
 
J

Jim Rech

I think you have two choices in removing an element from an array - either
create a second array missing this element or move every element up one
place in the array and redim preserve it.
 
A

Alan Beban

ExcelMonkey said:
I have a 1-D array. A Routine checks the cells in a range
and fills it (based on a test - boolean) with cell
addresses. I want to run a second routine, which checks
this same range and performs another test - boolean. If
the boolean is false and this particular cell address
already exists in the array, then I want to delete its
existence in the array. How do I do this and redimension
the array so that it no longer includes the deleted
elements. THanks


?Array(0)
$A$1
?Array(1)
$A$2
?Array(2)
$A$3

After the second check I would like to see:
?Array(0)
$A$1
?Array(1)
$A$3
I don't understand what's going on with the boolean test, but you might
want to consider something like

Sub xy10000()
arr = Array(1, 2, 3, 3, 4)
Set x = New Dictionary
On Error Resume Next
For Each Elem In arr
x.Add Item:=Elem, key:=CStr(Elem)
Next
arr = x.Items
End Sub

Alan Beban
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top