VBA Suche
#1
Hallo,
 
ich weiß, das Thema wurde schon mehr als 1000-mal behandelt. Doch nun versuche ich schon den ganzen Tag etwas zu basteln (viel Kenntnis von VBA habe ich echt wenig) um quasi eine suche in mein Excel zu bauen.
 
Folgende Problematik:
 
Ich will in Tabellenblatt "Suche" in Zelle "A1" eine Zahl eingeben können
 
Diese Zahl soll gesucht werden
 
Aktuell in Tabellenblatt "Auswertung"
 
Zukünftig in einer anderen Datei.
 
Jetzt Kann es sein, dass es den Wert öfter gibt den ich suche.
ich benötige als genaue Ausgabe die komplette Zeile, in dem der Wert vorhanden ist.
 
Die Krönung des Ganzen: der wert den ich suche kann wie folgt aussehen: "65.12" ; "77065" ; "J11092"
 
Die Tabelle in der ich suche hat den Suchbereich von "A:J"
 
Ich hoffe, dass mir hier jemand helfen kann.
 
Danke schon mal vorab und Gruß
Top
#2
Mein aktueller Stand, funktioniert soweit schon, nur müsste das jetzt auch Buchstaben und in der Suche berücksichtigen.

Code:
Sub prcX()
Dim laZell As Long
Dim loDeinWert As Long
Dim sFirstAdress As String

loDeinWert = Worksheets("Suche").Range("A1").Value 'gesuchter Wert

'alten Lieferschein löschen
Worksheets("Suche").Range("B3:K999").Clear

Set rng = Worksheets("Auswertung").Range("A:J").Find(loDeinWert)

If rng Is Nothing Then
MsgBox "Wert " & loDeinWert & " nicht gefunden!"
Else
sfirstaddress = rng.Address
Do
 laZell = Worksheets("Suche").Cells(Rows.Count, 3).End(xlUp).Row + 1
 If laZell < 3 Then laZell = 3   '1. Zeile minimum auf B3 setzen
 Worksheets("Auswertung").Cells(rng.Row, 1).Resize(1, 10).Copy
 Worksheets("Suche").Range("B" & laZell).PasteSpecial Paste:=xlPasteAll
 Application.CutCopyMode = False  'Kopie Modus löschen !!
 Set rng = Worksheets("Auswertung").Range("A:J").FindNext(rng)
Loop While Not rng Is Nothing And rng.Address <> sfirstaddress
End If
End Sub

Wie kann ich das jetzt erweitern auf meine noch offenen Fragen???

Gruß
Top
#3
Hallo,

wenn Du diesen Teil:
Code:
Set rng = Worksheets("Auswertung").Range("A:J").Find(loDeinWert)


so änderst,

Code:
Set rng = Worksheets("Auswertung").Range("A:J").Find(1, lookat:=xlPart)



dann wird auch in Teilen eines Zellwertes gesucht.
Gruß Atilla
Top
#4
Hallo Atilla,
 
danke für den Tipp. Leider kann ich diesen in dem Umfang nicht einsetzten.
Die suche muss den genauen Wert suchen und ausgeben.
Gibt es da keine Möglichkeit??

Gruß
Top
#5
Moin!
Code:
Dim loDeinWert As Long
sucht nur nach Ganzzahlen.
Mach mal so:
Code:
Dim varDeinWert As Variant

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • tw3aker
Top
#6
Hallo Ralf,

perfekt, das war es schon. Geht jetzt richtig gut. Wie kann ich jetzt in diese Skript einbauen, dass er mir die Möglichkeit gibt, das ganze aus einer externen Datei auszulesen??

BZW., ggf. kann ich das auch umdrehen. wie kann ich den Inhalt aus einem Tabellenblatt kopieren und in einer anderen Datei in ein Tabellen Blatt einfügen, rein über Marco und ohne dass man viel davon sieht? Quasi Botton drücken, er öffnet die andere Datei, überschreibt die Daten, speichert und schließt.

Gruß
Top
#7
Hallöchen,

so als erste Variante könntest Du den Code per Makrorekorder aufzeichnen. Starte den Rekorder, führe jede einzelne Aktion durch, und beende dann die Aufzeichnung. Dann kannst Du einen Button oder irgendein Objekt einfügen und dem ein Makro zuweisen.
Zuweilen ist es bei der Aufzeichnung von Vorteil, wenn Du das Blatt und die Zelle für eine Aktion erst auswählen musst und nicht schon dort bist. Der Recorder nimmst sonst nur ActiveSheet oder Selection und wenn Du das nächste mal woanders bist, kommt das Ergebnis auch nach woanders Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste