PDA

Vollständige Version anzeigen : Macro mit Suchfunktion


-= Kai =-
05.03.2004, 10:20
Hallo zusammen,

ich muss zurzeit jeden Morgen manuell eine Exceltabelle nach bestimmten Artikelnummern durchsuchen und diese - falls vorhanden - fett markieren. Diese Arbeit würde ich mir gerne durch ein Macro abnehmen lassen. Mit dem Macro-Rekorder bin ich auch schon ein Stück weitergekommen: Wenn ich das Macro aufrufe, geht eine Inputbox auf inder ich die gesuchte Artikelnummer eingeben kann. Dann durchsucht er das Worksheet und markiert den ersten Treffer. Allerdings habe ich Probleme eine Schleife zu definieren, sodass alle Zellen in dem Worksheet durchsucht werden und die Treffer fett markiert werden. Mir fehlt dazu einfach das Know-How. Sollte aber für einen vom Fach kein Problem sein.
Wäre schön, wenn mir jdn helfen könnte.

Danke und Gruss,
Kai

P.S.: Anbei noch mein jetziger Quellcode:

Sub finden_und_markieren()

'erste Zelle finden
Cells.Find(What:=InputBox("Gesuchte Nr", "Artikelnummern suchen"), After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

' fett markieren
Selection.Font.Bold = True

End Sub

Stefan Kulpa
05.03.2004, 11:42
Kein Wort von VB, daher ab in's Excel-Forum ...

Gruß,

eggzess
05.03.2004, 12:00
moin,



sorry beim genauen hinsehen macht der code doch nicht das was ich will

poste gleich nochmal



gruss eggzess

-= Kai =-
05.03.2004, 12:20
Hey! Vielen Dank. So hatte ich mir das vorgestellt! ... ein kleines Problem hab ich aber noch. Es kommt vor, dass in einer Zelle mehrere Artikelnummern vorkommen (nur mit Komma getrennt). Jetzt will ich natürlich nicht alle fett haben, sondern nur die gesuchte Artikelnummer.
Der Macro-Rekorder löst das so:

(...)

With ActiveCell.Characters(Start:=25, Length:=11).Font
.FontStyle = "Bold"
End With

(...)

Bevor ich anfange eine Funktion zu schreiben, die mir den Anfangspunkt herausfindet, dachte ich, fragst lieber nochmal hehehe

Grüße aus dem Schwabenländle,
Kai

-= Kai =-
05.03.2004, 12:21
hm? tut er nicht? hab ich zu früh geantwortet?

eggzess
05.03.2004, 12:28
moin,

also mein code von vorhin funzt ? glaube ich nicht, zumindest hat es bei mir nicht mehr hingehauen.

poste bitte deinen code nochmal so wie er jetzt läuft

gruss eggzess

-= Kai =-
05.03.2004, 12:31
mir fällt nur auf, dass er die Schleife ein paar mal zu oft durchgeht. Aber die Sekunde kann ich ja gut warten. Das ist für mich kein Problem. Anbei der Quellcode:


Sub finden_und_markieren()

Dim strSuchwort As String
Dim strDump As String
Dim intN As Integer

'Letzte nichtleere Zelle in Spalte A feststellen
intN = Cells(Cells.Rows.Count, 1).End(xlUp).Row
strSuchwort = InputBox("Gesuchte Nr", "Artikelnummern suchen")
For i = 1 To intN

'erste Zelle finden
Cells.Find(What:=strSuchwort, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

' fett markieren
Selection.Font.Bold = True

End Sub

jinx
05.03.2004, 15:32
Moin, Kai,

vielleicht solltest Du Dir für eine etwas schnellere Variante einmal den Beitrag Suchen und weitersuchen (http://www.herber.de/mailing/025198h.htm) ansehen - dort sollte die Mitteilungsbox durch die Fettformatierung ersetzt werden.

Bei Deinem Makro ist mir u.a. folgendes aufgefallen: letzte Zeile wird normalerweise nur mit Cells(Rows.Count, 1)... ausgelesen Du nutzt einen Schleifenzähler, dieser findet aber in die Abfrage keinen Einfluss (man könnte statt ActiveCell per Cells(i, 1) darauf zugreifen) die Beendigung der Schleife (NEXT) fehlt