Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Suchfunktion über Makro, gefunde Zelle markieren





Frage

Hallöchen! Ich stehe mal wieder vor einem für mich unlösbaren Problem. Ich hoffe, ihr habt eine Lösung für mich :o) Also: Ich möchte in einer bestimmten Zeile eine Zahl suchen und dann sollte die gefundene Zelle markiert bleiben. Bis jetzt sieht mein Makro so aus: ... Rows(Zeile).Select Selection.Find(What:=Platz, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate ... "Zeile" wird vorher im Makro zugewiesen, "Platz" ebenfalls. nachdem "Platz" gefunden wurde, soll in dieser Zelle ein Kommentar eingefügt werden. Momentan sieht es aber nach dem Ablauf des Makro so aus, dass zwar der "Platz" gefunden wird, aber immernoch die ganze Zeile markiert ist. So kann ich doch keinen Kommentar eintragen, oder? bitte helft mir liebe Grüße Kerstin

Antwort 1 von coros

Moin Kerstin,

nimm mal nachfolgende Anweisungen und tausche sie gegen Deine Alten , sprich die, die Du in Deiner Frage aufgeführt hast, aus.

With Worksheets(1).Rows(Zeile)
Set Suchbegriff = .Find(What:=Platz, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
Addresse = Suchbegriff.Address
Suchbegriff.Activate
End If
End With


Bei der Anweisung wird in der Zeile, die aus der Variablen "Zeile" hervorgeht nach dem Begriff aus der Variablen "Platz" gesucht. Wenn gefunden wird in der entsprechenden Zeile die Zelle mit dem Suchbegriff markiert.
Ich hoffe, Dir hilfts? Wenn nicht, dann melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von rehleinkh

Hallo coros,

so, ich das schon mal in mein Modul kopiert. Muss ich den Suchbegriff noch irgendwie vorher festlegen? Und bei Worksheets(1) muss dann das Tabellenblatt rein, in welchem ich suchen muss? Wenn ich das Makro so ausführe, kommt eine Fehlermeldung, ´runtime error 1004´ .

Kannst du bitte nochmal schauen?
Danke schon mal.

liebe Grüße
Kerstin

Antwort 3 von coros

Moin Kerstin,

da ich den Rest Deines Makros nicht kenne, kann ich auch keinerlei Hilfe zu dem Laufzeitfehler geben. Dafür benötigt man schon den kompletten VBA Code des Makros.

Zu Deiner Frage ob der Suchbegriff vorher noch festgelegt werden muss: Sorry, dass hatte ich vergessen zu schreiben, Du musst die Variable am Anfang Deines Makros als Range deklarieren. Am Anfang Deines Makros muss also die Zeile

Dim Suchbegriff As Range


eingefügt werden.

Dann zu dem Worksheet: Die Zahl sagt aus, um welchesTabellenblatt es sich handelt.Es gibt die Stelle an, an der sich das Blatt befindet. Sprich also in dem Makro wird der Code auf das 1. Tabellenblatt (angefangen die Tabellenblatter zu zählen wird von rechts nach links) angewendet. Wenn es sich bei Dir um z.B. das 3 Tabellenblatt von rechts handelt, muss dort eine 3 rein. Oder Du machst eine direkte Zuwesiung und tauscht die Zahl gegen den Blattnamen aus. Vergesse dabei aber nicht die Anführungszeichen (""), denn der Blattname als auch Zellenbezeichnungen müssen zwischen Anführungszeichen aufgeführt werden.

Unter Umständen kann es schon an der Deklaration der Variablen und dass der Code auf das falsche Tabellenblatt zugegriffen hat, gelegen haben, dass der Laufzeitfehler aufgetreten ist. Wobei, wenn man den Code mal als einzellnes laufen läßt, funktioniert er ohne Fehler. Daher nehme ich mal an, dass er sich mit dem Rest Deines Makros nicht verträgt. Teste mal mit den oben beschriebenen Änderungen. Wenn dann immer noch der oder ein anderer Fehler auftritt, dann melde Dich noch mal. Dann aber wie schon oben angesprochen mit dem gesamten Makrocode.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von rehleinkh

Hallo Coros,

so funktioniert es. Danke.

liebe Grüße
Kerstin