2016-04-29 8 views
-1

Ich muss Elemente aus dem Ende eines Arrays in VB hinzufügen und entfernen.Wie zum Hinzufügen und Entfernen von Array in VB

In Java, wenn ich zwei Methoden (die, die ein Element zu einem Array hinzufügt und die, die ein Element aus einem Array entfernt) habe, würde ich dies durch Erstellen einer statischen globalen Variable abzuschließen. Jedes Mal, wenn ich die add -Methode anrufe, würde ich einfach einfügen und dann eins zur statischen Variablen des Standorts hinzufügen, und dann, wenn ich etwas löschen müsste, würde ich diese Variable bekommen und dann eins davon abziehen. So würde ich am Ende des Arrays ein Element hinzufügen und das letzte Element im Array entfernen. Kannst du in VB genau so vorgehen? Ich bin nicht sehr vertraut mit VB, also wirft mich die Syntax ab. Jede Hilfe wäre willkommen.

+0

Wenn ich das richtig verstehe, sollten Sie einen Stapel verwenden, dies gilt auch für Java. In VBA können Sie eine erstellen, indem Sie das verwenden -> Set stack = CreateObject ("System.Collections.Stack"), wobei stack eine Variable des type-Objekts ist. –

+0

https://msdn.microsoft.com/en-us/library/wak0wfyt.aspx#Anchor_10 –

Antwort

0

Es gibt keine integrierte oder direkte Möglichkeit, dies mit Arrays zu tun, es sei denn, Sie können ein Collection Objekt verwenden.

Public Sub TestArr() 
    Dim list As New Collection 

    list.Add "John" 
    list.Add "Mary" 
    list.Add "Bob" 

    list.Remove 1 
End Sub 

Mit Arrays können Sie sie mit dem Preserve Schlüsselwort ReDim vorhandenen Daten zu halten.

Public Sub TestArr() 
    Dim list() As Variant 
    'Creates a dynamic list of 10 items 
    ReDim list(1 To 10) 
    Dim i As Long 
    For i = 1 To 10 
     list(i) = "Item" & CStr(i) 
    Next i 

    'Append to the end of an array 
    AppendToArray list, "NotAnItem" 

    'Remove the 5th element 
    RemoveFromArray list, 5 
End Sub 

Public Sub AppendToArray(ByRef list() As Variant, ByVal item As Variant) 
    Dim n As Long 
    n = UBound(list) 
    ' Make Room 
    ReDim Preserve list(1 To n + 1) 
    ' Assign new value 
    list(n + 1) = item 
End Sub 

Public Sub RemoveFromArray(ByRef list() As Variant, ByVal index As Long) 
    Dim n As Long, i As Long 
    n = UBound(list) 
    ' Move last items down by one 
    For i = index To n - 1 
     list(i) = list(i + 1) 
    Next i 
    ReDim Preserve list(1 To n - 1) 
End Sub 
Verwandte Themen