Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
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

Code anpassen

Code anpassen
15.07.2016 10:55:48
Andreas
Hallo Excelfreunde,
Ich habe hier ein Makro von Ramses gefunden was für mein Anliegen auch gut funktionieren würde.
Mein 1.Problem dabei ist es das ich bei der Anweisung im Code weiter unten
If MsgBox("Suchbegriff: " & sFind & ",gefunden in " & wks.Name & ", " & rng.Address, vbYesNo + vbQuestion, "Weitersuchen ?") = vbNo Then Exit Sub
auf ja klicke wird der Datensatz der gefunden wurde wird dann auch richtig in die tabelle3 kopiert.
-->Ich möchte gern dieses Meldungsfenster nicht mehr anzeigen lassen und bei jeden Datensatz der gefunden wurde auf ja klicken müssen, sondern die Anweisung gleich
wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
ausführen lassen wollen.
Wenn ich aber die MsgBox deaktiviere und dafür die Anweisung
'If ActiveCell = sFind Then
meckert mir der Code im Einzelschrittmodus bei der Anweisung Loop
Kann mir jemand von Euch den Code dementsprechend anpassen? Ich bekomme das selber einfach nicht auf die Reihe .
Zum zweiten Problem in diesem Makro möchte ich gern erreichen das das Makro nicht alle Tabellenblätter durchsucht sondern nur das Tabellenblatt1. (Also das Makro so abändern, das es nur für das Tabellenblatt Tabelle1 läuft
Nur zur Info warum ich das so haben möchte:
Ich habe im Tabellenblatt Tabelle1 ab Spalte C10 fortlaufend meine Kontoauszugsdaten seit dem Jahr 2005 dort stehen.
Ich möchte einfach in Tabelle1 in A1 einen Suchbegriff eingeben zB: DEVK dann soll das Makro mir alle Datensätze mit der Zeichenfolge an irgendeiner Stelle im Zelltext suchen und diesen Datensatz dann in die Tabell3 schreiben.
'Dieses Makro schreibt den Datensatz aus Suchbegriff in Tabelle1 A1 in die Zieltabelle Tabelle3
Sub Var_MultiSeek()
'by Ramses
'Sucht in der gesamten Mappe nach einem Begriff und kopiert die
'gefundene Zeile in eine zu definfierende Ergebnistabelle
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String
'Suchbegriff
Dim sFind As Variant
Dim cr As Long, tarWks As String
'Name_der_Zieltabelle
'Bitte Anpassen !!!!
tarWks = "Tabelle3"
cr = 65536
If Worksheets(tarWks).Cells(cr, 3) = "" Then
cr = Worksheets(tarWks).Cells(cr, 3).End(xlUp).Row
End If
If cr = 0 Then cr = 1
'Suchbegriff definieren
'sFind = InputBox("Bitte Suchbegriff eingeben:")
'If sFind = "" Then Exit Sub
'Suchbegriff auf Zelle definieren
sFind = Worksheets("Tabelle1").Range("A1")
For Each wks In Worksheets
If wks.Name = tarWks Then Exit Sub
Set rng = wks.Cells.Find(What:=sFind, _
LookAt:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
'Für die Automation kann die "If"-Anweisung auskommentiert werden
If MsgBox("Suchbegriff: " & sFind & ",gefunden in " & wks.Name & ", " & rng.Address, _
vbYesNo + vbQuestion, "Weitersuchen ?") = vbNo Then Exit Sub
'If ActiveCell = sFind Then    "hier meckert mir der Code wenn ich mit F8 im  _
Einzelschritt das Makro durchlaufe bei der Anweisung Loop
wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
cr = cr + 1
Set rng = wks.Cells.FindNext(After:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
NextStart:
Next wks
MsgBox prompt:="Keine neue Fundstelle!"
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code anpassen
15.07.2016 11:26:32
Andreas
Hallo Excelfreune,
Entschuldigung, das ich mich noch nicht für Eure Bemühungen und Hilfe im Voraus bedankt habe. Habe den Beitrag vorschnell abgeschickt. Nochmals Sorry
Also ich würde mich auf eine schnelle Hilfe und Lösung freuen.
Vielen Herzlichen Dank im Voraus
Andreas
AW: Code anpassen
15.07.2016 11:53:59
Christian
Quick and dirty:
Sub Var_MultiSeek()
'by Ramses
'Sucht in der gesamten Mappe nach einem Begriff und kopiert die
'gefundene Zeile in eine zu definfierende Ergebnistabelle
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String
'Suchbegriff
Dim sFind As Variant
Dim cr As Long, tarWks As String
'Name_der_Zieltabelle
'Bitte Anpassen !!!!
tarWks = "Tabelle3"
cr = 65536
If Worksheets(tarWks).Cells(cr, 3) = "" Then
cr = Worksheets(tarWks).Cells(cr, 3).End(xlUp).Row
End If
If cr = 0 Then cr = 1
'Suchbegriff definieren
'sFind = InputBox("Bitte Suchbegriff eingeben:")
'If sFind = "" Then Exit Sub
'Suchbegriff auf Zelle definieren
sFind = Worksheets("Tabelle1").Range("A1")
Set wks = ThisWorkbook.Worksheets("Tabelle1")
'For Each wks In Worksheets
If wks.Name = tarWks Then Exit Sub
Set rng = wks.Cells.Find(What:=sFind, _
LookAt:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
'Für die Automation kann die "If"-Anweisung auskommentiert werden
' If MsgBox("Suchbegriff: " & sFind & ",gefunden in " & wks.Name & ", " & rng. _
Address, _
vbYesNo + vbQuestion, "Weitersuchen ?") = vbNo Then Exit Sub
'If ActiveCell = sFind Then    "hier meckert mir der Code wenn ich mit F8 im _
Einzelschritt das Makro durchlaufe bei der Anweisung Loop
wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
cr = cr + 1
Set rng = wks.Cells.FindNext(After:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
'NextStart:
'Next wks
'MsgBox prompt:="Keine neue Fundstelle!"
End Sub
btw: deine Suchzelle ist so auch immer mit in der Ergebnisliste...
Anzeige
AW: Code anpassen
15.07.2016 12:00:13
Andreas
Hallo Christian,
Du schreibst das meine Suchzelle auch in Tabelle3 dann mit erscheint.
Das ist korrekt und für mich aber nicht schlimm.
Schön wäre es aber wenn diese Suchzelle in Tabelle3 nicht mit erscheint.
liebe Grüße Andreas
AW: Code anpassen
15.07.2016 12:19:33
Christian
... das wollte ich damit eigentlich gesagt haben. Aber hier wie gewünscht geändert. Suchbereich in Tab 1 ab C10 nach rechts und unten.
Gruß
Sub Var_MultiSeek()
'by Ramses
'Sucht in der gesamten Mappe nach einem Begriff und kopiert die
'gefundene Zeile in eine zu definfierende Ergebnistabelle
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String
'Suchbegriff
Dim sFind As Variant
Dim cr As Long, tarWks As String
'Name_der_Zieltabelle
'Bitte Anpassen !!!!
tarWks = "Tabelle3"
cr = 65536
If Worksheets(tarWks).Cells(cr, 3) = "" Then
cr = Worksheets(tarWks).Cells(cr, 3).End(xlUp).Row
End If
If cr = 0 Then cr = 1
'Suchbegriff definieren
'sFind = InputBox("Bitte Suchbegriff eingeben:")
'If sFind = "" Then Exit Sub
'Suchbegriff auf Zelle definieren
sFind = Worksheets("Tabelle1").Range("A1")
Set wks = ThisWorkbook.Worksheets("Tabelle1")
'For Each wks In Worksheets
If wks.Name = tarWks Then Exit Sub
Set rng = wks.Range("c10:" & wks.Cells(wks.Rows.Count, Columns.Count).Address).Find(What:= _
sFind, _
LookAt:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
'Für die Automation kann die "If"-Anweisung auskommentiert werden
' If MsgBox("Suchbegriff: " & sFind & ",gefunden in " & wks.Name & ", " & rng. _
Address, _
vbYesNo + vbQuestion, "Weitersuchen ?") = vbNo Then Exit Sub
'If ActiveCell = sFind Then    "hier meckert mir der Code wenn ich mit F8 im _
Einzelschritt das Makro durchlaufe bei der Anweisung Loop
wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
cr = cr + 1
Set rng = wks.Range("c10:" & wks.Cells(wks.Rows.Count, Columns.Count).Address). _
FindNext(After:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
'NextStart:
'Next wks
'MsgBox prompt:="Keine neue Fundstelle!"
wks.Cells(1, 1).Activate
End Sub

Anzeige
AW: Code anpassen
15.07.2016 12:36:35
Andreas
Hallo Christian,
habe dein geändertes Makro gerade getestet.
Genial, alles Super, genau so wollte ich es haben.
recht vielen dank.
liebe Grüße auch an alle anderen Helfer hier in diesem Forum.
Ist einfach immer Genial wenn man hier so schnell geholfen wird
Danke nochmals Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige