Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
188to192
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mehrfacheinträge

Mehrfacheinträge
03.12.2002 16:59:55
Dietmar E
Hallo
Ich verwende folgendes Makro um Mehrfacheinträge zu löschen.
Aber leider funktioniert es nicht richtig.
Meistens werden nur 2 Einträge entfernt und der Rest übersehen.
Woran kann das liegen?
Bitte um eure Hilfe

Dim FindeWas, Findewo As Range, Zelle As Range
Dim ZellenZeile%, Antwort, AktivesBlatt

AktivesBlatt = ActiveSheet.Name

Was = ActiveCell.Value

Set wo = Worksheets("Löten").UsedRange


Worksheets("Löten").Activate

For Each Zelle In wo
If Zelle.Value = Was Then
ZellenZeile = Zelle.Row
Rows(ZellenZeile).Select
Selection.Delete Shift:=xlUp
End If
Next

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Mehrfacheinträge
03.12.2002 20:28:46
Nepumuk
Hallo Dietmar,
dass dein Programm nicht richtig arbeitet liegt daran, dass du aus dem UsedRange Zeilen löschst. Habe für dich eine etwas aufwendigeres aber funktionieren Lösung.

Option Explicit
Dim Feld() As Long
Public Sub Löschen()
Dim Adresse As String, Zelle As Range, zähler As Long, index As Integer
With Sheets("Löten")
With .UsedRange
Set Zelle = .Find(ActiveCell.Value)
If Not Zelle Is Nothing Then
Adresse = Zelle.Address
Do
zähler = zähler + 1
ReDim Preserve Feld(1 To zähler)
Feld(zähler) = Zelle.Row
Set Zelle = .FindNext(Zelle)
Loop While Not Zelle Is Nothing And Zelle.Address <> Adresse
End If
End With
If zähler > 1 Then Call sortieren(1, zähler)
If zähler > 0 Then
For index = zähler To 1 Step -1
.Rows(Feld(index)).Delete Shift:=xlUp
Next index
End If
End With
End Sub
Private Sub sortieren(Untergrenze As Long, Obergrenze As Long)
Dim index1 As Long, index2 As Long, Element As Variant, Zwischenspeicher As Variant
index1 = Untergrenze
index2 = Obergrenze
Zwischenspeicher = Feld(((Untergrenze + Obergrenze) / 2) \ 1)
Do
Do While Feld(index1) < Zwischenspeicher
index1 = index1 + 1
Loop
Do While Zwischenspeicher < Feld(index2)
index2 = index2 - 1
Loop
If index1 <= index2 Then
Element = Feld(index1)
Feld(index1) = Feld(index2)
Feld(index2) = Element
index1 = index1 + 1
index2 = index2 - 1
End If
Loop Until index1 > index2
If Untergrenze < index2 Then Call sortieren(Untergrenze, index2)
If index1 < Obergrenze Then Call sortieren(index1, Obergrenze)
End Sub

Gruß
Nepumuk

Anzeige
Re: Mehrfacheinträge
03.12.2002 20:49:20
Dietmar E
Da ich leider erst seit kurzem mit VBA arbeite, weiß ich nicht wie ich deinen Vorschlag in meine Tabelle integrieren muß.
Könntest du mir noch eine kleine Anleitung schreiben?
Danke
Re: Mehrfacheinträge
03.12.2002 20:58:15
Nepumuk
Hallo Dietmar,
den kompletten Code in ein Modul kopieren, auf dein Ausgangsblatt einen Button setzen und das Makro Löschen zuweisen. Den Button (Schaltfläche) entnimmst du aus der Symbolleiste "Formular". Ansonsten arbeitet es wie dein altes Programm. Der Suchbegriff wird aus der aktiven Zelle entnommen.
Gruß
Nepumuk
Re: Mehrfacheinträge
03.12.2002 21:23:17
Dietmar E
Danke Nepumuk.
Nachdem ich noch Cells(ActiveCell.Row, 1).Select eingefügt habe, funktioniert es wie ich es mir wünsche.

Nochmals Danke

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige