Anzeige
Archiv - Navigation
1856to1860
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

Makro anpassen

Makro anpassen
25.11.2021 14:34:44
Sebastian
Hi zusammen ich hätte eine kleine Frage. Ich würde dieses Makro gerne anpassen. Es soll im Blatt "Infos" ab Zelle "U1" bis zur letzten gefüllten Zelle in U, die Daten in die Zwischenablage kopieren.

Sub Abw_Kopieren()
Range(Cells(19, 93), Columns(93).Find(What:="*", _
After:=Cells(1, 93), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False, _
SearchFormat:=False)).Copy
End Sub
Danke schon mal im Voraus :)

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro anpassen
25.11.2021 14:55:15
Rudi

Sub Abw_Kopieren()
Range(Cells(1, 21), Columns(21).Find(What:="*", _
After:=Cells(1, 21), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False, _
SearchFormat:=False)).Copy
End Sub

AW: Makro anpassen
25.11.2021 14:56:13
Klaus
Hallo Sebastian,
dein Makro verstehe ich nicht. Deine Aufgabe würde ich so lösen:

Sub Abw_Kopieren()
Dim lRow As Long
With Sheets("Info")
lRow = .Cells(.Rows.Count, 21).End(xlUp).Row
Range("U1:U" & lRow).Copy
End With
End Sub
Oder kürzer, aber weniger elegant:

Sub Abw_Kopieren()
Sheets("Info").Range("U1:U" & .Cells(.Rows.Count, 21).End(xlUp).Row).Copy
End Sub
LG,
Klaus M.
Anzeige
kürzer geht aber schief
25.11.2021 15:00:09
Rudi
wenn dann

Sub Abw_Kopieren()
Sheets("Info").Range("U1:U" & Sheets("Info").Cells(Rows.Count, 21).End(xlUp).Row).Copy
End Sub

AW: kürzer geht aber schief
26.11.2021 06:19:11
Klaus
Danke Rudi!
(bei länger fehlt auch ein Punkt vor dem Range, sehe ich gerade)
ultra penibel richtig:
26.11.2021 07:37:29
Klaus
Wenn dann ganz penibel richtig:

Sub Abw_Kopieren()
Sheets("Info").Range("U1:U" & Sheets("Info").Cells(Sheets("Info").Rows.Count, 21).End(xlUp).Row).Copy
End Sub
Denn es KÖNNTE ja sein, das innerhalb der Mappe zwei Tabellen mit verschieden Zeilenanzahlen vorkommen UND mehr als 65536 Einträge vorhanden sind, dann lieferte ein unreferenziertes Rows.Count ein falsches Ergebnis.
LG,
Klaus M.
Anzeige
AW: ultra penibel richtig:
26.11.2021 08:04:53
Sebastian
Einen wunderschönen guten Morgen,
erst mal vielen Dank :) Das penible Marko funktioniert auch an sich :) Allerdings kopiert er 2000 Zeilen Nullen mit, da die leeren Zellen nicht wirklich leer sind sondern nur per Formel "" leer gemacht sind. Ich denke das versteht das Makro nicht :( Lässt sich das anpassen ?
AW: ultra penibel richtig:
26.11.2021 09:31:09
Sebastian
Hi Klaus M, die hatte ich auch probiert. Allerdings nimmt mir die Filterung mein Arbeitsblatt auseinander :( Fände deine Lösung wesentlich besser :)
Anzeige
AW: ultra penibel richtig:
26.11.2021 09:38:51
Sebastian
Das alte Makro, hat eigentlich super geklappt, nur das ich es nicht angepasst bekomme, das es auf dem Blatt " Infos " ab U1 Kopiert :(
dann bist du doch ...
26.11.2021 09:53:29
Rudi
...mit meiner zuerst angebotenen Lösung bestens bedient.
Gruß
Rudi
AW: ultra penibel richtig:
26.11.2021 09:55:39
Luschi
Hallo Sebastian,
bei mir geht das so:

Sub Abw_Kopieren()
Dim rg1 As Range, rg2 As Range
With Worksheets("Info")
'Bereich mit leeren Zellen am Schluß und erspart mir das Zählen mit den Fingern
'da ich in 10 min schon wieder vergessen habe, daß Spalt 'U' doe SpaltenNr. 21 hat
Set rg1 = Range(.Cells(1, "U"), .Cells(.Rows.Count, "U").End(xlUp))
'letzte Zelle mit Wert in Spalte 'U'
Set rg2 = rg1.Find("*", rg1.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious, False, False, False)
End With
'Bereich neu festlegen 'U1' bis rg2
Set rg1 = rg1.Cells(1, 1).Resize(rg2.Row)
rg1.Copy
Set rg1 = Nothing: Set rg2 = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: ultra penibel richtig:
26.11.2021 10:19:52
Sebastian
Bääämmmsssss :) Da isses :) Dankeschön :)
AW: ultra penibel richtig:
26.11.2021 10:22:16
Klaus
Ohne deine Datei zu kennen (was steht in den Formeln usw.) ist es schwer, eine performante Lösung zu liefern.
Hier eine sacklangsame Lösung, die aber funktioniert. Wenn du nur ein paar hundert Zeilen hast, merkst du bestimmt kaum dass das Makro läuft. Auf mehrere hunderttausend Zeilen würde ich eine solche Schleife aber nicht anwenden.

Sub OhneLeereOhneFilterLangsam()
Dim z As Long
With Sheets("info")
z = 1
Do Until .Cells(z, 21).Value = ""
z = z + 1
Loop
.Range("U1:U" & z - 1).Copy
End With
End Sub
LG,
Klaus M.
Anzeige
AW: Makro anpassen
25.11.2021 15:22:23
GerdL
Moin

With Worksheets("Infos")
.Columns("U").AutoFilter field:=1, Criteria1:=""
.AutoFilter.Range.Copy
End With
Gruß Gerd
AW: Makro anpassen
26.11.2021 09:37:46
Sebastian
Danke dir Gerd, aber die Filter Lösung ist hier nicht so Ideal :( Auch hier ist das Problem das er die "" Leeren Zellen nicht als Leer ansieht und eine 0 mit kopiert.
AW: Makro anpassen
26.11.2021 10:15:06
GerdL
Naja Sebastian, vor Weiterem möchte ich von dir eine hier hochgeladene Beispieltabelle, ggf. mit Dummydaten, aber deinen Formel-Leer-Zellen sehen.
Denn in meiner Tabelle tritt dieses Phänomen mit meinem Code nicht auf.
Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige