Excel VBA: .find-Methode mit nicht-Suche

Salute Profis,

wie kann ich mit .find(… den nächsten/vorigen Eintrag finden, auf den eine Suche nicht paßt?

Konkret: ich habe eine Spalte mit diversen Buchstabenfolgen und möchte ab der Markierung nach oben suchen nach der ersten Zelle, in der eine andere Buchstabenfolge steht.

Vielen Dank und frohe Pfingsten :o)
-Rob.

wie kann ich mit .find(… den nächsten/vorigen Eintrag
finden, auf den eine Suche nicht paßt?

Konkret: ich habe eine Spalte mit diversen Buchstabenfolgen
und möchte ab der Markierung nach oben suchen nach der ersten
Zelle, in der eine andere Buchstabenfolge steht.

Hallo Rob,

MUß „find“ benutzt werden?

Gruß
Reinhard

wie kann ich mit .find(… den nächsten/vorigen Eintrag
finden, auf den eine Suche nicht paßt?

Konkret: ich habe eine Spalte mit diversen Buchstabenfolgen
und möchte ab der Markierung nach oben suchen nach der ersten
Zelle, in der eine andere Buchstabenfolge steht.

Hallo Rob,

vielleicht so, müßte durch Vbanutzung von vielfach schnelleren Excelfunktionen sehr schnell sein auch bei XL 2007.

Sub Finden()
Dim Formel As String
Formel = "=WENN(A1""" & Selection.Value & """;ZEILE();"""")"
Range(Cells(1, 26), Cells(Selection.Row, 26)).FormulaLocal = Formel
MsgBox "unterster anderer Eintrag in A" & Application.Max(Columns(26))
Columns(26).ClearContents
End Sub

Errorhandler kannste dir leicht selbst basteln, google nach dem Wort…

Gruß
Reinhard

Salu Reinhard,

nein, .find muß nicht verwendet werden. Ich dachte nur, damit wäre es der eleganteste Weg.

vielleicht so, müßte durch Vbanutzung von vielfach schnelleren
Excelfunktionen sehr schnell sein auch bei XL 2007.

Sub Finden()
Dim Formel As String
Formel = „=WENN(A1"“" & Selection.Value & „“";ZEILE();"""")"
Range(Cells(1, 26), Cells(Selection.Row, 26)).FormulaLocal =
Formel
MsgBox „unterster anderer Eintrag in A“ &
Application.Max(Columns(26))
Columns(26).ClearContents
End Sub

Dat hilft leider nicht, weil ich die Chose nicht als angezeigten Zellwert benötige, sondern um das Einfügen und Löschen von Blockabschnitten unterschiedlicher Höhe zu bewerkstelligen. Das .find soll die in einer versteckten Hilfsspalte enthaltenen Start- und Endmarker finden, damit der Block entsprechend behandelt werden kann. Ich habe mir aber jetzt mit Do … While beholfen. Ist halt nicht so schön, aber läuft; da die Blöcke auch meist nur ein paar Zeilen hoch sind, auch recht schnell.

Errorhandler kannste dir leicht selbst basteln, google nach
dem Wort…

Errorhandler - schon gemacht. Aber wieso kommt der Hinweis gerade hier? Gibt es in Deinem Codebeispiel einen anders nicht umschiffbaren Error-Fall? Ich habe so etwas beim Löschen von Contents öfter: immer wenn ich .SpecialCells(xlCellTypeConstants).ClearContents anwende und
keine Contents drinne sind, kommt eine Fehlermeldung. Also sieht die Chose bei mir so aus:

Sub Soundso()
On Error GoTo SorryLeute
... 
On Error Resume Next
.SpecialCells(xlCellTypeConstants).ClearContents
On Error GoTo Sorry Leute
... 
Exit Sub
SorryLeute:
... 
End Sub

Geht das eleganter?

Beste Grüße
-Rob.

Hallo Rob,

nein, .find muß nicht verwendet werden. Ich dachte nur, damit
wäre es der eleganteste Weg.

aha, ich wollte nur wissen ob find benutzt werden benutzt. Wenn nicht ist alles klar, ggfs. benutze ich das dann, wollte nur wissen ob das ein Dogma ist.

Dat hilft leider nicht, weil ich die Chose nicht als
angezeigten Zellwert benötige, sondern um das Einfügen und
Löschen von Blockabschnitten unterschiedlicher Höhe zu
bewerkstelligen.

Block? Blockabschnitte? Unterschiedliche Höhe?
Lade mal mit http://npshare.de/ eine Mappe hoch.

Errorhandler kannste dir leicht selbst basteln, google nach
dem Wort…

Errorhandler - schon gemacht. Aber wieso kommt der Hinweis
gerade hier?

Gibt es in Deinem Codebeispiel einen anders nicht
umschiffbaren Error-Fall?

ups, seh grad nicht warum ich das schrieb.
Wer weiß schon was ich da beim Schreiben so dachte, ich nicht mehr.
An „Selection.Value“ zu denken war es nicht.
Gibt anzunehmenderweise auch eine Fehlermeldung wenn Selection z.B. ein Diagramm oder sonstwas ist.

.SpecialCells(xlCellTypeConstants).ClearContents anwende und

Specialcells ist immer gefährlich. Wird nix gefunden kommt Fehler.

Gruß
Reinhard