1.6k Aufrufe
Gefragt in Tabellenkalkulation von dommel Mitglied (361 Punkte)
Hallo Ihr Lieben, ich muss euch noch einmal um eure Hilfe bitten.

Es geht wieder um die tollen VBA Codes für die Makros.

Ich habe vor die Suchfunktion über "Strg. + F" in ein Makro zu packen.
Nur funktioniert die Aufzeichnung des Makros nicht.
Wie sieht der Code denn aus?, dass bei einem Klick auf ein Button die Suche erscheint.


Meine zweite Frage ist, wie sieht ein Code aus, der er alles unterhalb einer bestimmten Zeile, die ich vorher definieren möchte, löscht.

Bsp. Alle Inhalte, Formatierungen, Füllungen Formeln unterhalb von Zeile 18 sollen bei einem Klick auf einen Button gelöscht werden.


Ich hoffe, dass ihr mir weiterhelfen könnt. Vielen Dank

3 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo DOMEI,

ein Suchenmakro wäre z.B. folgendes.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Sub Suchen()
Dim strSuche As String
Dim rngErgebnis As Range
Dim firstAddress As String
Dim strGefunden() As String
Dim intZählerGesamt As Integer
Dim intZählerEinzel As Integer

Do
strSuche = InputBox("Mindestens die 3 ersten Buchstaben des Suchbegriffes " _
& "oder kompletten Suchbegriff eingeben. Groß-/Kleinschreibung ist egal.", "Suchen")
If strSuche = "" Or Len(strSuche) = 0 Then Exit Sub
Loop Until Len(strSuche) > 2

Set rngErgebnis = Range("A4:IV65536").Find(what:=strSuche, lookat:=xlPart, LookIn:=xlValues, MatchCase:=False)
If rngErgebnis Is Nothing Then
MsgBox "Suchbegriff wurde nicht gefunden! Es ist aber nicht 100% sicher, dass " _
& "der gesuchte Begriff sich nicht in der Tabelle befindet. Überprüfen Sie " _
& "daher bitte nochmal die Schreibweise und geben den Suchbegriff erneut ein, " _
& "oder suchen Sie den Begriff manuell in der Tabelle.", vbInformation, "Meldung..."
Else
firstAddress = rngErgebnis.Address
Do
intZählerGesamt = intZählerGesamt + 1
ReDim Preserve strGefunden(1 To intZählerGesamt)
strGefunden(intZählerGesamt) = rngErgebnis.Address
Set rngErgebnis = Range("A4:IV65536").FindNext(rngErgebnis)
Loop While Not rngErgebnis Is Nothing And rngErgebnis.Address <> firstAddress
Do
intZählerEinzel = intZählerEinzel + 1
If intZählerEinzel = intZählerGesamt Then
End If
Range(strGefunden(intZählerEinzel)).Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column
If MsgBox(CStr(intZählerEinzel) & ". von " & CStr(intZählerGesamt) _
& " gefundenen Übereinstimmungen des Suchbegriffes." & vbLf _
& "Die nächste Übereinstimmung anzeigen?", vbQuestion + vbYesNo, "Meldung...") = 7 Then Exit Do
If intZählerEinzel = intZählerGesamt Then Exit Do
Loop
End If
Set rngErgebnis = Nothing
End Sub


Zu Deiner 2. Frage: Entweder über

Rows("18:65536").Deletedie Zeilen komplett löschen oder über die Zeile

Range("A18:IV65536").Clear nur die Inhalte und Format löschen.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
Echt super..Läuft perfekt....einen herzlichen Dank.. werde euch wahrscheinlich in naher Zukunft leider nicht mehr beehren, weil ich morgen meine (dank euer Hilfe) datei vorstelle.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo DOMMEI,

gerne geschehen. Danke auch für die Rückmeldung.

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