Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1408to1412
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

automatisierte Suchfunktion als Makro

automatisierte Suchfunktion als Makro
09.02.2015 13:44:09
Florian
Hallo zusammen,
ich habe folgenden Plan im Kopf, den ich gerne mit eurer Hilfe umgesetzt haben möchte.
Ich habe eine Excelfile mit zwei Blättern. In Tabellenblatt 1 stehen Materialnummern mit Informationen dahinter. In Tabellenblatt zwei stehen die gleichen Materialnummern mit anderen Informationen. Ich möchte z.B. mittels einer Suchfunktion in Tabellenblatt 1 eine Materialnummer auswählen und diese in Tabellenblatt 2 suchen und anzeigen lassen.
Ich benötige also ein Makro, dass die markierte Zelle als Suchbegriff erkennt und diesen Suchbegriff in Tabellenblatt 2 sucht.
Die Suchfunktion zu nutzen war lediglich eine erste Idee von mir. Wenn es eine andere/bessere Lösung gibt, würde ich natürlich auch diese gerne annehmen.
Vielen Dank für eure Hilfe im voraus.
Gruß, Flo

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: automatisierte Suchfunktion als Makro
09.02.2015 13:52:18
Daniel
Hi
schau dir mal die SVerweis-Funktion an.
Wenn du pro Materialnummer eine Datenzeile hast, wäre dies die passende Funktion für deine Aufgabe
Gruß Daniel

AW: automatisierte Suchfunktion als Makro
09.02.2015 14:04:19
Klaus
Hallo Flo,
ich habe verstanden, du willst tatsächlich per Makro das Tabellenblatt wechseln? Dann so (Spalten und Namen bitte anpassen)
Option Explicit
Sub GeheZuMaterial()
Const TabVon As String = "Tabellenblatt 1"
Const TabZu As String = "Tabellenblatt zwei"
Const SpalteFinden As Long = 2 'in Spalte B finden im Tabellenblatt 1
Const SpalteSuchen As Long = 1 'in Spalte A suchen im Tabellenblatt zwei
Dim tmpFind As String
If Not ActiveSheet.Name = TabVon Then
'nix machen, wenn nicht auf Tabelle1
Else
tmpFind = Sheets(TabVon).Cells(ActiveCell.Row, SpalteFinden).Value
Sheets(TabZu).Activate
Sheets(TabZu).Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind).Select
End If
End Sub
Falls du den Wert nur ausgeben willst, dann nimm SVERWEIS!
Grüße,
Klaus M.vdT.

Anzeige
AW: automatisierte Suchfunktion als Makro
09.02.2015 15:15:03
Florian
Hallo Klaus M.vdT.
Genau, dass war schon alles danke.
Kannst du mir noch sagen, wie ich den folgenden Fehler ausmärzen kann?
"Laufzeitfehler 91:
Objektvariable oder With-Blockvariable nicht festgelegt"
Gruß,
Flo

AW: automatisierte Suchfunktion als Makro
09.02.2015 15:30:24
Florian
Als kleiner Nachtrag: in der folgenden Zeile wird der Fehler angezeigt.
Sheets(TabZu).Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind).Select
Gruß, Flo

AW: automatisierte Suchfunktion als Makro
09.02.2015 16:00:47
Florian
Hallo Klaus,
könntest du nochmal drüber schauen, warum der Laufzeitfehler entsteht?
Danke und Gruß.
Flo

AW: automatisierte Suchfunktion als Makro
10.02.2015 09:33:53
Daniel
Hi
ein Fehlergrund ist, dass du nur auf dem aktiven Tabellenblatt selektieren kannst.
Dh du musst erst das Blatt selektieren und dann die Zelle.
Oder du verwendest Application.Goto:
Variante 1)
Sheets(TabZu).Select
ActiveSheet.Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind).Select
Variante 2)
Application.Goto Sheets(TabZu).Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind)
ein Fehler tritt in beiden Fällen auf, wenn der Suchbegriff tmpFind nicht gefunden werden kann.
um das auch noch abzusicher solltest du so vorgehen:
dim rngFind as range
Set rngFind = Sheets(TabZu).Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind)
if Not rngFind is Nothing then Application.goto rngFind
Gruß Daniel

Anzeige
AW: automatisierte Suchfunktion als Makro
10.02.2015 09:55:26
Florian
Hallo Daniel,
danke für deine Hilfe.
Letztes Feintuning: Wo packe ich deinen Verbesserungsvorschlag in das Makro von Klaus rein?
Option Explicit

Sub GeheZuMaterial()
Const TabVon As String = "Tabellenblatt 1"
Const TabZu As String = "Tabellenblatt zwei"
Const SpalteFinden As Long = 2 'in Spalte B finden im Tabellenblatt 1
Const SpalteSuchen As Long = 1 'in Spalte A suchen im Tabellenblatt zwei
Dim tmpFind As String
If Not ActiveSheet.Name = TabVon Then
'nix machen, wenn nicht auf Tabelle1
Else
tmpFind = Sheets(TabVon).Cells(ActiveCell.Row, SpalteFinden).Value
Sheets(TabZu).Activate
Sheets(TabZu).Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind).Select
End If
End Sub

Dachte, dass dein Vorschlag mit in die If-Funktion muss, aber es funktioniert nicht.
Danke und Gruß,
Flo

Anzeige
AW: automatisierte Suchfunktion als Makro
10.02.2015 11:43:32
Klaus
Hallo Flo und Daniel,
bei mir funktioniert das geschriebene ohne Fehler. Ich "aktiviere" ja auch "TabZu", bevor ich "Selektiere".

Sheets(TabZu).Activate
Sheets(TabZu).Cells(1, SpalteSuchen).EntireColumn.Find(tmpFind).Select

Meine Vermutung ist eher, dass Flo den Tabellenblattnamen nicht korrekt angegeben hat. Vielleicht ein Leerzeichen vergessen oder sowas.
Grüße,
Klaus M.vdT.

AW: automatisierte Suchfunktion als Makro
10.02.2015 12:07:21
Daniel
Hi
ich würde das ganze so schreiben
Option Explicit
Sub GeheZuMaterial()
Dim TabVon as Worksheet
Dim TabBis as Worksheet
dim tmpFind as string
dim rngFind as Range
Const SpalteFinden As Long = 2 'in Spalte B finden im Tabellenblatt 1
Const SpalteSuchen As Long = 1 'in Spalte A suchen im Tabellenblatt zwei
Set TabVon = Sheets("Tabellenblatt 1") 'Namen ggf anpassen
Set TabZu =Sheets("Tabellenblatt zwei") 'Namen ggf anpassen
If Not ActiveSheet.Name = TabVon.Name Then
'nix machen, wenn nicht auf Tabelle1
Else
tmpFind = TabVon.Cells(activeCell.Row,SpalteFinden).Value
set rngFind = TabZu.Cells.columns(SpalteSuchen).Find(tmpFind, LookAt:=xlWhole, LookIn:= _
xlvalues)
if rngFind is Nothing then
msgbox tmpFind & " nicht vorhanden"
else
application.goto rngFind
End If
End If
End Sub
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige