PDA

Vollständige Version anzeigen : Wörter mit Länge = 1 löschen


Mr. Snoot
10.03.2009, 09:25
Hi,

ich habe eine Wortliste, in der ich gerne alle Wörter, die nur aus einem Buchstaben bestehen, löschen möchte (bzw. die ganze Zeile).

Ich dachte, ich prüfe einfach mit
If Len(Range()) = 1 Then
Range()EntireRow.Delete
End If

Aber irgendwie mag Excel nicht so recht, und löscht mir jedes Wort, egal wie lang es ist. Hat für Excel vielleicht ein längeres Wort (bspw. 5 buchstaben) gleichzeitig immer die Länge 1, 2, 3, 4 und 5? Das wäre die einzige Erklärung, die ich habe. Aber wie löse ich das Problem denn dann? Oder hab ich doch irgendwo 'nen Fehler im Code?

Hier mal das ganze Makro:
Sub einbuchstb_woerter_loeschen()

Dim iZeile As Integer
Dim wks As Worksheet
Dim rng As Range

iZeile = 1
Set wks = Worksheets("Tabelle1")
Set rng = Range("A" & iZeile)

For iZeile = wks.UsedRange.Rows.Count To 1 Step -1
If Len(rng) = 1 Then
rng.EntireRow.Delete
End If
Next iZeile

End Sub

Uwe Küstner
10.03.2009, 09:34
Hallo,

in der Schleife prüfst Du immer auf die Zelle A1.

Hier ein funktionierendes Beispiel:

Sub einbuchstb_woerter_loeschen()

Dim iZeile As Integer
Dim wks As Worksheet

iZeile = 1
Set wks = Worksheets("Tabelle1")

For iZeile = wks.UsedRange.Rows.Count To 1 Step -1
If Len(wks.Range("A" & iZeile).Value) = 1 Then
wks.Rows(iZeile).Delete
End If
Next iZeile

End Sub

EarlFred
10.03.2009, 09:36
Hallo Mr. Snoot,

der folgende Codeteil

iZeile = 1
Set wks = Worksheets("Tabelle1")
Set rng = Range("A" & iZeile)

For iZeile = wks.UsedRange.Rows.Count To 1 Step -1
If Len(rng) = 1 Then
rng.EntireRow.Delete
End If
Next iZeile

untersucht IMMER Zelle A1!

Set rng = Range("A" & iZeile)
muss in die Schleife, damit die Werte nacheinander durchsucht werden.

Grüße
EarlFred

Mr. Snoot
10.03.2009, 10:05
Ah ja, daran hab ich nicht gedacht.

Ich hatte bei den bisherigen Makros immer den komplett ausgeschriebenen Code benutzt (Range("A" & iZeile)), weil mir das aber zu blöd wurde, wollte ich's hier erstmal mit der Variablen verkürzen - und hab's natürlich gleich falsch gemacht :)

Vielen Dank.