Excel VBA: Suchen-Funktion + Wenn-Funktion

...komplette Frage anzeigen

2 Antworten

Es gibt keine Zeile L.
Es gibt nur eine Spalte L.
Und weder eine Zeile noch eine Spalte kann in VBA als Integer definiert werden.
Und ich vermute mal, dass Du nicht die ganze Spalte L löschen willst, sondern nur die Zelle der Spalte L in der Zeile, in der M70 steht.
Wenn Du das alte Makro wieder hergestellt hast, müsste es darin eine Variable vom Typ "Range" geben, die die Zelle repräsentiert, in der M70 gefunden wurde.
Angenommen, diese Variable heißt rngGefunden.
Dann löscht diese Zeile die Zelle der Spalte L, in der Zeile von rngGefunden:

Cells(rngGefunden.Row, 12).ClearContents

SamyMetal 01.07.2014, 11:48

Leider muss ich, falls die Suche erfolgreich war, eine variable Zeile löschen, also wenn ich M70 gefunden habe, will ich mich in eine Zelle in jener Zeile reinsetzen und diese komplett löschen, nicht nur die Inhalte. Normalerweise nehme ich dann immer die Zelle in Spalte B

Also -> Range("B"&l).select Und dann diese löschen, wie bringe ich das in eine If-Funktion? Und warum beendet sich mein Makro falls nichts gefunden wurde?

0
Oubyi 01.07.2014, 12:05
@SamyMetal

SO löscht Du die komplette Zeile, in der M70 gefunden wurde (Bist Du sicher, mit M70?, in dem VBA Code von Dir steht M50!?).

Dim rngGefunden As Range
'.....
Set rngGefunden = Columns("C:C").Find(What:="M70", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

If rngGefunden Is Nothing Then
    Columns("C:C").Select
Else: Cells(rngGefunden.Row, 1).EntireRow.Delete
End If

Und natürlich - denke ich - endet das Makro, falls nichts gefunden wurde?
Was solle es denn sonst machen?

P.S.: Genau testen, ich übernehme keine Verantwortung für Datenverluste etc.

0
SamyMetal 01.07.2014, 12:32
@Oubyi

leider sollte das Makro nicht enden, falls nichts gefunden wurde... daran haperts leider, und ja ich such nach M70 (beispielsweise), war bloß grade mit M50 beschäftigt, das waren nur Beispiele, aber danke vielmals!

0
SamyMetal 01.07.2014, 12:42
@SamyMetal

Hmm der Code (meiner Meinung nach müsste sogar passen, leider kommt bei mir jetzt der Laufzeitfehler 13 : Typen unverträglich, wie kann ich das umgehen?

0
Oubyi 01.07.2014, 23:57
@SamyMetal

Bei mir läuft das Makro genau so!

In welcher ZEILE des Makros kommt der Laufzeitfehler?
Hast Du das
Dim rngGefunden As Range
mit eingegeben?
Und das Set vor der Variablen?
Das ist eigentlich der einzige Typ und der stimmt überall.
Hast Du vlt. irgendwo etwas geändert, angepasst?
Wieso das Makro endet oder nicht verstehe ich immer noch nicht.

0
SamyMetal 02.07.2014, 08:29
@Oubyi

Ich habs neu gestartet und jetzt hats wunderbar funktioniert, warum es gestern nicht ging ist mir schleierhaft. Danke für die Hilfe, es ist damit nämlich fertig! :)

0

du kannst das alte Makro noch herstellen, wenn du die Datei noch auf hast, Ctrl + Z

beim rest kann ich die leider nicht helfen, Schreib mal den Microsoft support an :)

SamyMetal 01.07.2014, 11:38

Danke, nein darum gings mir leider nicht, das alte Makro war eh Schrott ;) An alle, die es eventuell wissen, hier ist der Auszug:

Columns("C:C").Select
If (Selection.Find(What:="M50", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate) = False Then Columns("C:C").Select
    

Ich versuche also falls die Suche keine Ergebnisse ausspuckt, wieder eine Spalte anzuwählen, bzw. falls die Suche erfolgreich ist, eine Zeile zu löschen.

In diesem Fall die Zeile l, die vorher als Integer definiert wurde.

0
Oubyi 01.07.2014, 11:46
@SamyMetal

Wie schon in meiner Antwort oben geschrieben, gibt es in Excel keine Zeile l.
Und eine Zeile kann auch nicht als Integer definiert werden.
Und wieso ist das Makro Schrott?
Ich denke ihr habt schon ewig damit gearbeitet ?!
(Zugegeben, der gezeigte Teil ist nicht optimal)
Falls Dir meine Codezeile oben nicht hilft, beschreibe nochmal genauer, was geleistet werden soll.
Oder hast Du vlt. einen Kollegen, der sich da etwas auskennt?

0
SamyMetal 01.07.2014, 11:53
@Oubyi

An sich arbeiten wir damit ewig, doch leider hat es bisher händisch eingetippt, ein Makro hat dazu niemand geschreiben, und ich soll jetzt eines erstellen. Das alte Makro (auch von mir) ist einfach zu umständlich gewesen für die vorherigen Schritte. Ich hoffe dass es jetzt etwas klarer wird, und ja ich bin totaler VBA Anfänger! Leider können mir die Kollegen auch nicht weiterhelfen, deswegen bin ich ja schon kräftig am fragen, ob ihr die Lösung habt :)

0
Oubyi 01.07.2014, 12:06
@SamyMetal

Ich habe gerade in meiner Antwort oben reagiert.
Vielleicht hilft Dir das ja.
Ich schau morgen nochmal hier, rein, leider muss ICH jetzt zur Arbeit.

0

Was möchtest Du wissen?