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

Change "EntireRow.Copy" in range

Change "EntireRow.Copy" in range
07.07.2022 10:03:23
Johannes
Hallo zusammen
ich habe einen code gefunden, der mir genau das macht, was ich brauche und ihn angepasst.(fast)
Der code sucht in allen ws in den Zellen R8:R36 nach dem Text "good", und wenn er fündig wird, dann
kopiert er die ganze reihe auf die Seite "Best".
Ich hätte aber gerne nur die werte von "spalte S" bis "spalte AO" übernommen. Habe schon mit

xRRg.Range(Cells(Rng.Row, "S"), Cells(Rng.Row, "AO")).Copy
probiert,
aber nix. Was mach ich falsch?
Danke
Johannes
Hier noch der ganze Code

Public Sub Copy_when_Found()
Dim xWs As Worksheet
Dim xCWs As Worksheet
Dim xRg As Range
Dim xStrName As String
Dim xRStr As String
Dim xRRg As Range
Dim xC As Integer
On Error Resume Next
Application.DisplayAlerts = False
xStr = "Best"                                           ' result site
xRStr = "good"                                          ' search string
Set xCWs = ActiveWorkbook.Worksheets.Item(xStr)
If Not xCWs Is Nothing Then
xCWs.Delete
End If
Set xCWs = ActiveWorkbook.Worksheets.Add
xCWs.Name = xStr
xC = 5                                                   'Start line '5
For Each xWs In ActiveWorkbook.Worksheets
If xWs.Name  xStr Then
Set xRg = xWs.Range("R8:R36")                   ' search range
Set xRg = Intersect(xRg, xWs.UsedRange)
For Each xRRg In xRg
If xRRg.Value = xRStr Then
'xRRg.Range(Cells(Rng.Row, "S"), Cells(Rng.Row, "AO")).Copy
xRRg.EntireRow.Copy                    ' copy range
xCWs.Cells(xC, 1).PasteSpecial xlPasteValuesAndNumberFormats
xC = xC + 1
End If
Next xRRg
End If
Next xWs
Application.DisplayAlerts = True
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Change "EntireRow.Copy" in range
07.07.2022 10:13:48
ralf_b

xws.Cells(xrrg.Row, "S").resize(0,23).Copy

sorry update
07.07.2022 10:16:11
ralf_b
(1,23) nicht (0,23)
AW: sorry update
07.07.2022 10:32:36
Luschi
Hallo Johannes,
es geht auch so:

    With xRRg.Parent
.Range(.Cells(xRRg.Row, "S"), .Cells(xRRg.Row, "AO")).Copy
End With
Gruß von Luschi
aus klein-Paris
PS: Achte auf die Punkte vor .Range und .Cells - Ralfs Variante sieht schicker aus, aber ich tue mir da mit dem Zählen, wie weit der Bereich tatsächlich geht geht, etwas schwerer.
AW: Change "EntireRow.Copy" in range
07.07.2022 10:57:02
Herbert_Grom
Hallo Johannes,
so hat es bei mir geklappt:

Option Explicit
Sub Copy_when_Found()
Dim xWs As Worksheet
Dim xCWs As Worksheet
Dim xRg As Range
Dim xStrName As String
Dim xStr As String
Dim xRStr As String
Dim xRRg As Range
Dim xC As Integer
On Error Resume Next
Application.DisplayAlerts = False
xStr = "Best"                                           ' result site
xRStr = "good"                                          ' search string
Set xCWs = ActiveWorkbook.Worksheets.Item(xStr)
If Not xCWs Is Nothing Then
xCWs.Delete
End If
Set xCWs = ActiveWorkbook.Worksheets.Add
xCWs.Name = xStr
xC = 5                                                   'Start line '5
For Each xWs In ActiveWorkbook.Worksheets
If xWs.Name  xStr Then
Set xRg = xWs.Range("R8:R36")                   ' search range
Set xRg = Intersect(xRg, xWs.UsedRange)
For Each xRRg In xRg
If xRRg.Value = xRStr Then
xRRg.Cells(xRg.Row - 7, "B").Resize(1, 23).Copy      ' copy range
xCWs.Cells(xC, 1).PasteSpecial xlPasteValuesAndNumberFormats
xC = xC + 1
End If
Next xRRg
End If
Next xWs
End Sub
Servus
Anzeige
AW: Passt, Danke ist ein bischen Zäh, aber geht
07.07.2022 11:25:25
Johannes
Merci an alle,
kommt mir ein wenig langsam vor, der code,(war er aber vor eurer Änderung auch schon) aber immer noch schneller als manuell Copy-Paste.
Wenn jemand eine beschleunigte Version weiß, bitte gerne.
Ich hänge nicht an meinen Kreationen, sind zwar mühsam zusammengestückelt, aber ich weiß, dass ich noch sehr am Anfang mit VBA steh.
Danke
Johannes
AW: Passt, Danke ist ein bischen Zäh, aber geht
07.07.2022 14:21:03
Herbert_Grom
Was ist bei dir "zäh"? Das ist u. U. auch von deiner PC-Leistung abhängig. Doch ist ja der Datenumfang (R8:R36) sehr gering, weshalb ich das nicht verstehe.
AW: Passt, Danke ist ein bischen Zäh, aber geht
07.07.2022 15:31:11
ralf_b
naja der code könnte schon etwas schneller gemacht werden siehe hier.
https://stackoverflow.com/questions/47089741/how-to-speed-up-vba-code
du hast wohl recht viele Arbeitsblätter zusammen zu fassen.
man könnte den Bereich im Ganzen kopieren,
dann in eine neue Spalte den Wertevergleich mit der Suchspalte
das Ganze dann filtern und nicht benötigte Zeilen und die Hilfsspalte löschen
geht ratz fatz.
Anzeige
AW: Passt, Danke ist ein bischen Zäh, aber geht
07.07.2022 16:28:04
Johannes
Danke, schaue ich mir mal an,
dauert ein bis zwei Minuten pro Durchlauf.
Ich verwende im momentan 4 WBooks mit je 10-15 WSheets.
Da sind elend lange dabei, mit um die 10 000 Zeilen und eine Menge Berechnungen abfragen und bedingte Formatierungen.
Ich verstehe schon das der sich abmüht, ist auch ok, wenn ich warten muss, das Skript nimmt mir sehr viel Arbeit ab.
Einstweilen,
Danke euch allen sehr,
Johannes
AW: Passt, Danke ist ein bischen Zäh, aber geht
07.07.2022 16:37:10
ralf_b
dann dürfte das Abschalten der automatischen Berechnung schon helfen.
AW: Passt, Danke ist ein bischen Zäh, aber geht
07.07.2022 21:41:10
Johannes
Ok Gute Idee, Check ich morgen mal
danke
Johannes

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige