Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
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

zu kopierenden Bereich erweitern

zu kopierenden Bereich erweitern
18.07.2016 10:56:31
Andreas
Hallo Excelfreunde,
Ich komme mit dem Code an der Stelle die ich im Code weiter unten definiert habe einfach zu keiner Lösung.
Vielleicht kann mir einer von Euch da weiterhelfen und mir den Code dazu anpassen
Für Eure Bemühungen bedanke ich mich bereits im voraus
Andreas
Sub finden()
'Dieses Makro schreibt den Datensatz aus Suchbegriff in Tabelle1 A1 in die Zieltabelle Tabelle3
'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"
Debug.Print tarWks
cr = 65536
If Worksheets(tarWks).Cells(cr, 3) = "" Then
cr = Worksheets(tarWks).Cells(cr, 3).End(xlUp).Row
Debug.Print cr
End If
If cr = 0 Then cr = 1
'Suchbegriff definieren
'sFind = InputBox("Bitte Suchbegriff eingeben:")           'Suchbegriff in eine InputBox  _
eingeben
'If sFind = "" Then Exit Sub
'Suchbegriff auf Zelle definieren
sFind = Worksheets("Tabelle1").Range("A1")                 'Suchbegriff in eine Zelle eingeben
Debug.Print sFind
Debug.Print wks
Set wks = ThisWorkbook.Worksheets("Tabelle1")              'Suchtabelle definieren
'For Each wks In Worksheets                                'für alle Tebellen in Datei
If wks.Name = tarWks Then Exit Sub
Debug.Print wks.Name
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
Debug.Print sAdresse
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
wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
'ab hier komme ich nicht mehr weiter
'wks.Rows (rng.Row): & activesheet.range("B1:E1).Copy Destination:=Worksheets( _
tarWks).Row(cr)
'oder diese Anweisungen nach der Codezeile  "wks.Rows(rng.Row).Copy Destination:= _
Worksheets(tarWks).Rows(cr)"
'ActiveCell.Offset(0, 1).Activate
'Sheets("Tabelle1").Range("A2").Copy
'Sheets("Tabelle3").Range(ActiveCell).PasteSpecial Paste:=xlPasteValues
'funktionieren bei mir nicht was mache ich falsch?
kann mir einer den Code so anpassen, das in meinem Fall zusätzlich ab Spalte D in der aktiven  _
Zeile der Bereich aus Tabelle1 B1:E1 mit kopiert und eingefügt wird.
Zur besseren Verständigung: die Zellen B1:E1 werden entsprechend des Suchbegriffes aus Tabelle1  _
A1 variabel angepasst um später mit den Daten weiter arbeiten zu können.
Debug.Print cr
cr = cr + 1                                'Zeilennummer wird um 1 hochgezählt zB.  _
C10 wird dann C11 usw.
Debug.Print rng
Set rng = wks.Range("c10:" & wks.Cells(wks.Rows.Count, Columns.Count).Address). _
FindNext(After:=ActiveCell)
'Debug.Print rng.adresse
If rng.Address = sAddress Then Exit Do     'wenn im Bereich Tabelle1 ab C10 Wert  _
mit gesuchten Wert aus Tabelle1 A1 übereinstimmt dann weiter mit Loop sonst Exit
Loop
End If
'NextStart:
'Next wks
'MsgBox prompt:="Keine neue Fundstelle!"
wks.Cells(1, 1).Activate
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zu kopierenden Bereich erweitern
18.07.2016 11:01:11
Hajo_Zi
man könnte vermute
Sheets("Tabelle3") ist nicht die aktuelle Tabelle. nur dort gibt es ActiveCell
'Sheets("Tabelle3").ActiveCell.PasteSpecial Paste:=xlPasteValues

AW: zu kopierenden Bereich erweitern
18.07.2016 11:19:29
Andreas
Hallo Hajo,
erst mal vielen Dank für die schnelle Antwort.
Die Suchtabelle ist definiert mit wks (Tabelle1)
Die Zieltabelle ist tarWks (Tabelle3)
es sollen die Datensätze ab Tabelle1 C10 die den Suchbegriff in Tabelle1 A1 entsprechen in die Zieltabelle Tabelle3 kopiert werden.
Das funktioniert in meinem Makro auch bestens.
Jetzt zu meinem Anliegen.
die Codezeile " wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr) "
soll entweder so angepasst werden das zum Suchergebnis (welches dann in die Tabelle3 geschrieben wird)immer noch dazu die Zellen (B1:E1 aus Tabelle1) ab Spalte D in der Zieltabelle Tabelle3 in die entsprchende Datenzeile geschrieben werden.
Ich hoffe ich habe das einigermaßen verständlich erklärt
Gruß Andreas
Anzeige
AW: zu kopierenden Bereich erweitern
18.07.2016 11:20:57
Andreas
Hallo, habe vergessen Beitrag noch offen zu stellen
Sorry Gruß Andreas
AW: zu kopierenden Bereich erweitern
18.07.2016 12:42:54
Andreas
Hallo Excelfreunde,
hier nochmal der Code ohne meine vorherigen Kommentare und DebugPrint dazu.
Zur besseren Lesbarkeit.
Habe immer noch keine Lösung zu meinem Anliegen gefunden.
Deshalb Beitrag immer noch offen.
Benötige immer noch Hilfe
Gruß Andreas
Sub finden()
'Dieses Makro schreibt den Datensatz aus Suchbegriff in Tabelle1 A1 in die Zieltabelle Tabelle3
'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
sFind = Worksheets("Tabelle1").Range("A1")
Set wks = ThisWorkbook.Worksheets("Tabelle1")              'Suchtabelle definieren
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
wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
das habe ich jetzt selber versucht zu lösen
' --> 'wks.Rows (rng.Row): & activesheet.range("B1:E1).Copy Destination:= _
Worksheets(tarWks).Row(cr)
oder diese Anweisungen nach der Codezeile
"wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)"
'-->'ActiveCell.Offset(0, 1).Activate
'-->'Sheets("Tabelle1").Range("A2").Copy
'-->'Sheets("Tabelle3").Range(ActiveCell).PasteSpecial Paste:=xlPasteValues
funktionieren bei mir nicht
kann mir einer den Code so anpassen, das in meinem Fall zusätzlich ab Spalte D  _
in
der aktiven _
'Zeile der Bereich aus Tabelle1 B1:E1 mit kopiert und eingefügt wird.
'Zur besseren Verständigung: die Zellen B1:E1 werden entsprechend des  _
Suchbegriffes aus Tabelle1 _
'A1 variabel angepasst um später mit den Daten weiter arbeiten zu können.
'Die Suchtabelle ist definiert mit wks (Tabelle1)
 'Die Zieltabelle ist tarWks (Tabelle3)

'es sollen die Datensätze ab Tabelle1 C10 die den Suchbegriff in Tabelle1 A1 entsprechen in  _
die Zieltabelle Tabelle3 kopiert werden.
 'Das funktioniert in meinem Makro auch bestens.
'Jetzt zu meinem Anliegen.
'die Codezeile " wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr) "
'soll entweder so angepasst werden das zum Suchergebnis (welches dann in die Tabelle3  _
geschrieben wird)
'immer noch dazu die Zellen (B1:E1 aus Tabelle1) ab Spalte D in der Zieltabelle Tabelle3 in  _
die entsprchende Datenzeile geschrieben werden.
 'Ich hoffe ich habe das einigermaßen verständlich erklärt

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     'wenn im Bereich Tabelle1 ab C10 Wert  _
mit gesuchten Wert aus Tabelle1 A1 übereinstimmt dann weiter mit Loop sonst Exit
Loop
End If
wks.Cells(1, 1).Activate
End Sub

Anzeige
AW: zu kopierenden Bereich erweitern
18.07.2016 12:45:49
baschti007
Probiere mal so dein Code war ziemlich verwirrend ;)

Sub finden2()
Dim ws1, ws2 As Worksheet
Dim last As Long
Dim rng As Range
Dim letzteZ1, letzteS1, letzteZ3 As Long
Dim Gesucht As String
Dim GefundenIn As Range
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle3")
letzteZ1 = ws1.Cells(1048576, 3).End(xlUp).Row
letzteS1 = ws1.Cells(10, 256).End(xlToLeft).Column
letzteZ3 = ws2.Cells(1048576, 3).End(xlUp).Row
Set rng = ws1.Range(Cells(10, 3), Cells(letzteZ1, letzteS1))
Gesucht = ws1.Range("A1")
Set GefundenIn = rng.Find(Gesucht, LookIn:=xlValues, LookAt:=xlWhole)  'LookAt xlPart oder  _
xlWhole (genaue Übereinstimmung)
If GefundenIn = "" Then MsgBox "Das gesuchte Wort > " & Gesucht & " 

Anzeige
AW: zu kopierenden Bereich erweitern
18.07.2016 12:53:34
baschti007
Ahh du musst den einen satz ersetzen
Sonst kommt ein feherl ;) is Nothing brauchen wir da nicht =""
If GefundenIn Is Nothing Then MsgBox "Das gesuchte Wort > " & Gesucht & "
AW: zu kopierenden Bereich erweitern
19.07.2016 07:21:03
Andreas
Hallo baschti007,
komme erst Heute wieder an meinen Rechner ran,
Habe deinen Code mal getestet. fehlt aber noch die Schleife damit alle Datensätze in Tabelle1 (Suchtabelle)gefunden werden. Sind Kontoumsätze seit 2005 fortlaufend vorhanden, welche ich nach Kategorien durchsuchen möchte, zB. sollen alle Kontoumsäte gefunden werden, welche im Text an irgendeiner Stelle das Wort zB. Steuer enthält usw.
Mein Code hat das soweit auch alles gemacht. Nur wollte ich ihn soweit ergänzen, das er mir an jeden Datensatz der dem Suchkriterium entspricht ab Spalte "D" die Begriffe die ich in Tabelle1 in die Zellen B1 bis E1 variabel immer mit zu dem gefundenen Datensatz mit dazu geschrieben werden.
werde Deinen Code versuchen noch anzupassen.
Läuft aber von der Sache erst mal so wie ich das haben wollte.
Werde mich dann nochmal melden.
Gruß Andreas
Anzeige
AW: zu kopierenden Bereich erweitern
19.07.2016 09:51:07
baschti007
Teste mal so.
Sub finden2()
Dim ws1, ws2 As Worksheet
Dim last As Long
Dim rng As Range
Dim letzteZ1, letzteS1, letzteZ3 As Long
Dim Gesucht As String
Dim zell As Range
Dim x As Long
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle3")
letzteZ1 = ws1.Cells(1048576, 3).End(xlUp).Row
letzteS1 = ws1.Cells(10, 256).End(xlToLeft).Column
letzteZ3 = ws2.Cells(1048576, 3).End(xlUp).Row
Set rng = ws1.Range(Cells(10, 3), Cells(letzteZ1, letzteS1))
Gesucht = "*" & ws1.Range("A1") & "*"
If Gesucht = "**" Then Exit Sub
For Each zell In rng
If zell.Value Like Gesucht Then
If ws2.Range("C" & letzteZ3) = "" Then letzteZ3 = 1 Else letzteZ3 = letzteZ3 + 1
ws1.Range(ws1.Cells(zell.Row, 3), ws1.Cells(zell.Row, 3)).Copy ws2.Range("C" & letzteZ3)
ws1.Range(ws1.Cells(1, 2), ws1.Cells(1, 5)).Copy ws2.Range("D" & letzteZ3)
ws1.Range(ws1.Cells(zell.Row, 4), ws1.Cells(zell.Row, letzteS1)).Copy ws2.Range("H" &  _
letzteZ3)
x = x + 1
End If
Next
If x = 0 Then MsgBox Gesucht & " nicht gefunden"
If x > 0 Then MsgBox Gesucht & " " & x & " mal gefunden"
End Sub

Anzeige
AW: zu kopierenden Bereich erweitern
20.07.2016 07:28:18
Andreas
Hallo baschti007
Vielen Dank nochmals für Deine Mühe,
Hat super geklappt.
funktioniert genauso wie ich es haben wollte.
nochmals vielen herzlichen Dank
Andreas
Danke Danke =)
20.07.2016 08:03:36
baschti007

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige