kleine-vba frage

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/kleine-vba_frage_172332/page_1 - zur Vollversion wechseln!


die 7 zwerge schrieb am 28.11.2006 um 10:49

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 schrieb am 28.11.2006 um 17:58

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 schrieb am 29.11.2006 um 11:05

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 schrieb am 29.11.2006 um 15:56

sehr nett, danke!


JC schrieb am 29.11.2006 um 16:02

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 schrieb am 29.11.2006 um 16:04

lösung?


DirtyHarry schrieb am 29.11.2006 um 19:19

@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 schrieb am 29.11.2006 um 20:16

Zitat von die 7 zwerge
lösung?

zweimal hintereinander ausführen? ;)


DirtyHarry schrieb am 29.11.2006 um 21:05

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 ;)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025