"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

kleine-vba frage

die 7 zwerge 28.11.2006 - 10:49 744 8
Posts

die 7 zwerge

Addicted
Registered: Jun 2002
Location: .nl
Posts: 362
hi!

ich hab hier eine lange excel-datei aus der ich bestimmte sachen löschen sollte. drum bräucht ich ein kleines script, das einfach alle ZEILEN löscht, die ein bestimmtes wort oder so beinhalten. ich dachte meine vba-kenntnisse sind noch ausreichen, hab aber leider schon zu viel vergessen.

danke im vorraus
die7werge

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12684
ich weiß zwar jetzt auf die schnelle keine vba lösung... zum glück muss ich sagen da vba der teufel ist... ABER vielleicht kannst du das ganze mit nem autofilter lösen?

also filter erstellen, nach dem bestimmten wort filtern und dann die zeilen löschen.

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
Code: PHP
Sub DeleteRowByValue(myvalue As String)

    Dim c As Range

    For Each c In ActiveWindow.RangeSelection
        If c.value = myvalue Then
            c.EntireRow.Delete
        End If
    Next c

End Sub

löscht aus dem aktiven markierten bereich alle zeilen die den wert myvalue enthalten

die 7 zwerge

Addicted
Registered: Jun 2002
Location: .nl
Posts: 362
sehr nett, danke!

JC

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
Der erste Blick sagt mir, dass das nicht ganz funktionieren kann. Wenn eine Zeile gelöscht wird, beginnt dieses Stück Code IMHO nicht zu Beginn der nun aktuellen Zeile. Die Zellen in der nachgerückten Zeile, die sich vor der aktuellen Zelle befinden, bleiben in diesem Fall ungeprüft und die Lösung ist nicht zu hundert Prozent effektiv.

Zudem wäre die Angabe von myvalue über eine InputBox vielleicht eine besserer Ansatz :)

die 7 zwerge

Addicted
Registered: Jun 2002
Location: .nl
Posts: 362
lösung?

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
@jc, interessanter einwand - aber excel lässt da nichts aus, auch wenn da zweimal untereinander der gleiche wert steht

mit input box:

Code: PHP
Sub DeleteRowByValue()

    Dim myvalue As String
    Dim c As Range
    
    myvalue = InputBox("Bitte den zu suchenden Text eingeben!", "Zeilen mit Text löschen", "Suchtext")
    
    For Each c In ActiveWindow.RangeSelection
        If c.Value = myvalue Then
            c.EntireRow.Delete
        End If
    Next c

End Sub

Du kannst diesen Code auch einer Schaltfläche oder wwi zuweisen um ihn aufzurufen

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von die 7 zwerge
lösung?

zweimal hintereinander ausführen? ;)

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
bzw solange die schleife wiederholen und nen counter mitrennen lassen bis die anzahl der ersetzungen 0 ist :)

damit erschlägt man dann auch fälle > 2 ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz