[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 221
  • Last Modified:

removing items from an array

How do I do the following:

I have a dynamic array: ItemList() and it contains the following 7 items of data:

Bob
Anne
Jane
Mary
Tim
Jack
John

along the way, items are tagged as no longer availible and I've replaced them with [REMOVED] so my list of 7 items now reads:

Bob
Anne
[REMOVED]
Mary
Tim
[REMOVED]
John

whats the best way to take away the [REMOVED] items so i am left with an array of 5 items:

Bob
Anne
Mary
Tim
John

Cheers,

`Andy
0
xizor
Asked:
xizor
  • 2
1 Solution
 
JR2003Commented:
This should do the trick:

Private Sub Command1_Click()
    Dim MyArray() As String
    ReDim MyArray(1 To 5)
    MyArray(1) = "qwe"
    MyArray(2) = "[REMOVED]"
    MyArray(3) = "qwe"
    MyArray(4) = "[REMOVED]"
    MyArray(5) = "qwe"
    Dim i As Long
    Dim j As Long
    j = 0 'Initialise
    For i = LBound(MyArray) To UBound(MyArray)
        If (i + j) > UBound(MyArray) Then Exit For
        If MyArray(i + j) = "[REMOVED]" Then
            j = j + 1
        End If
        If j <> 0 And (i + j) <= UBound(MyArray) Then
            MyArray(i) = MyArray(i + j)
        End If
    Next i
    If j <> 0 Then
        ReDim Preserve MyArray(LBound(MyArray) To UBound(MyArray) - j)
    End If
End Sub
0
 
xizorAuthor Commented:
Thanks!
0
 
JR2003Commented:
Ooops, I just realised there is a bug in the code I just geve you.
This version works
JR

Private Sub Command1_Click()
    Dim MyArray() As String
    ReDim MyArray(1 To 6)
    MyArray(1) = "[REMOVED]"
    MyArray(2) = "[REMOVED]"
    MyArray(3) = "[REMOVED]"
    MyArray(4) = "QWE4"
    MyArray(5) = "[REMOVED]"
    MyArray(6) = "[REMOVED]"
    Dim i As Long
    Dim j As Long
    j = 0 'Initialise
    For i = LBound(MyArray) To UBound(MyArray)
        If i + j > UBound(MyArray) Then Exit For
        MyArray(i) = MyArray(i + j)
        While (MyArray(i) = "[REMOVED]") And (i + j) < UBound(MyArray)
            j = j + 1
            MyArray(i) = MyArray(i + j)
        Wend
    Next i
    If j <> 0 Then
        ReDim Preserve MyArray(LBound(MyArray) To UBound(MyArray) - j - LBound(MyArray))
    End If
    For i = LBound(MyArray) To UBound(MyArray)
        Debug.Print MyArray(i)
    Next i
End Sub

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now