Nachfolgend eine kleine einfache Prozedur, mit der sich ein Element aus einem Arrays löschen lässt. So gibt es keine Probleme: ' KillFlag = z.B. CHR$(1) ' man will z.B. nur ein Element löschen, hier Feld 5: ' ZeileInFeldLoeschenFilter FeldT(), 5, Killflag ' man will z.B. zwei Elemente löschen, hier Feld 5 und 7: ' FeldT(5) = Killflag: Feld(7) = Killflag ' ZeileInFeldLoeschenFilter FeldT(), -1, Killflag ' -1 -> Flag nur extern gesetzt ' man will z.B. zwei Elemente löschen, hier Feld 5 und 7: ' FeldT(5) = Killflag ' extern, FeldT(7) intern ' ZeileInFeldLoeschenFilter FeldT(), 7, Killflag ' -1 -> Flag intern und extern gesetzt Sub ZeileInFeldLoeschenFilter(ByRef Feld() As String, PlatzNummer As Long, _ Killflag As String) ' PlatzNummer < 0 bedeutet Killflag wurde nur extern gesetzt, ' z.B. Feld(2) = Killflag, Feld(3) = Killflag ' Nur wenn Killflag intern gewünscht wird, sonst Platznummer < 0 If PlatzNummer >= 0 Then Feld(PlatzNummer) = Killflag End If Feld() = Filter(Feld(), Killflag, False, vbBinaryCompare) End Sub Beispiele Dim FeldT() As String Dim KillFlag As String: KillFlag = "°" ' z.B. ' Zeilen löschen extern ReDim FeldT(2) FeldT(0) = "Zeile 0 Start" FeldT(1) = "Zeile 1 Start" FeldT(2) = "Zeile 2 Start" FeldT(1) = KillFlag ZeileInFeldLoeschenFilter FeldT(), -1, KillFlag MsgBox Join(FeldT(), "|"), , "Markierte Zeile 1 wurde extern gelöscht" MsgBox UBound(FeldT()) ' Zeilen löschen intern ReDim FeldT(2) FeldT(0) = "Zeile 0 Start" FeldT(1) = "Zeile 1 Start" FeldT(2) = "Zeile 2 Start" ZeileInFeldLoeschenFilter FeldT(), 1, KillFlag MsgBox Join(FeldT(), "|"), , "Zeile 1 wurde intern gelöscht" MsgBox UBound(FeldT()) ' Zeilen löschen extern und intern ReDim FeldT(2) FeldT(0) = "Zeile 0 Start" FeldT(1) = "Zeile 1 Start" FeldT(2) = "Zeile 2 Start" FeldT(1) = KillFlag ' extern ZeileInFeldLoeschenFilter FeldT(), 2, KillFlag MsgBox Join(FeldT(), "|"), , "Zeile 1 extern, Zeile 2 intern gelöscht" MsgBox UBound(FeldT()) ' Würde gesamtes Feld löschen ReDim FeldT(2) FeldT(0) = "Zeile 0 Start" FeldT(1) = "Zeile 1 Start" FeldT(2) = "Zeile 2 Start" FeldT(0) = KillFlag: FeldT(1) = KillFlag: FeldT(2) = KillFlag ' alle extern ZeileInFeldLoeschenFilter FeldT(), -1, KillFlag MsgBox Join(FeldT(), "|"), , "Zeile 0,1,2 extern gelöscht, Feld ist damit leer" MsgBox UBound(FeldT()) Dieser Tipp wurde bereits 8.150 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
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. |