vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Arrays   |   VB-Versionen: VB5, VB607.11.02
Array-Elemente beliebig verschieben

Eine Funktion, mit der sich ein Array-Element beliebig nach vorne bzw. nach hinten schieben lässt.

Autor:   Nico HeidtkeBewertung:  Views:  33.685 
home.t-online.de/home/michaelheidtkeSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Sie haben ein Array und wollen dass z.B. das 3. Element an die Position 1 schieben, wobei die Elemente 1 und 2 jeweils nach hinten rutschen sollen? Oder: Das Element 2 soll um 10 Elemente nach hinten verschoben werden. Oder...

Mit nachfolgender Funktion geht's ganz einfach - in jede Richtung.

' Array-Element um x-Positionen nach vorne/hinten
' verschieben
Public Function MoveInList(vList As Variant, _
  ByVal nElement As Long, _
  ByVal nMove As Long)
 
  Dim i As Long
  Dim vTemp As Variant
  Dim nSize As Long
  Dim nMode As Integer
 
  ' Dimensionsgröße
  nSize = UBound(vList)
 
  ' Plausibilitätsprüfungen
  If nElement + nMove < 0 Then
    nMove = nMove - (nMove + nElement)
  End If
 
  If nElement + nMove > nSize Then
    nMove = nSize - nElement
  End If
 
  ' Mode: nach hinten oder nach vorne verschieben?
  ' (Vorzeichen ermitteln)
  nMode = Sgn(nMove)
 
  ' Gültiger Wert?
  If nMode <> 0 Then
    ' zu verschiebendes Element "merken"
    vTemp = vList(nElement)
 
    ' Jetzt die einzelne Elemente verschieben
    For i = nElement + nMode To nElement + nMove Step nMode
      vList(i - nMode) = vList(i)
    Next i
 
    '  Element an die gewünschte Position setzen
    vList(nElement + nMove) = vTemp
  End If
End Function

Beispiel:
Es existiert folgendes Array:

sText(0) = "Anton"
sText(1) = "Berta"
sText(2) = "Christa"
sText(3) = "Dieter"
sText(4) = "Egon"
sText(5) = "Friedrich"
sText(6) = "Gunther"
sText(7) = "Heinrich"

Das Element 3 (Dieter) soll jetzt zwei Position nach hinten (unten) verschoben werden, so dass Egon und Friedrich nach vorne rutschen:

' Element 3 nach Position 5 schieben
MoveInList sText(), 3, 2

Und heraus kommt jetzt folgende Reihenfolge:

sText(0) = "Anton"
sText(1) = "Berta"
sText(2) = "Christa"
sText(3) = "Egon"
sText(4) = "Friedrich"
sText(5) = "Dieter"
sText(6) = "Gunther"
sText(7) = "Heinrich"



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.