Anzeige
Archiv - Navigation
1848to1852
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

.Range(lastrow, 2)

.Range(lastrow, 2)
04.10.2021 09:31:06
Eisi
Guten Morgen :-)
seit Freitag hänge ich fest. Kann man anhand der Codezeilen bereits den Fehler erkennen?
Es soll ein dynamischer Bereich nach Sheet PDF in die Spalte B .... 2 Leerzellen unter der letzten befüllten Zelle kopiert werden.
Im Moment also B2 = letzte Zelle, Zielzelle soll dann B5 sein.
-----------------------------------------------------------------------------------------------------------------
Dim lastrow As Long ' Ist Long richtig oder Range ?
lastrow = Worksheets("PDF").Range("B2000").End(xlUp).Row + 2
'merke dir die 2. Zelle nach der letzten befüllten Zelle in Spalte B
-----------------------------------------------------------------------------------------------------------------
' kopiere den Bereich aus Sheet: Leerzeilen_ausblenden nach ->> Sheet: PDF
With Leerzeilen_ausblenden
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
Set rngBereich = .Range("A1:B" & lngZeileMax + 1)
rngBereich.Copy Sheets("PDF").Range(lastrow, 2)
' Das geht: rngBereich.Copy
' ? Dieser Teil geht nicht: Sheets("PDF").Range(lastrow, 2) ?
' kopiere den Bereich aus Sheet: Leerzeilen_ausblenden nach ->> Sheet: PDF. In der Zelle B2 steht der letzte Inhalt.
End With
-----------------------------------------------------------------------------------------------------------------
Vielen Dank für die Hilfe.
VG Eisi :-)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .Range(lastrow, 2)
04.10.2021 09:36:31
Klaus
ungetestet:

Dim lastrow As Long 'LONG IST KORREKT
lastrow = Worksheets("PDF").Range("B2000").End(xlUp).Row + 2
'merke dir die ZEILE DER 2. Zelle nach der letzten befüllten Zelle in Spalte B
' kopiere den Bereich aus Sheet: Leerzeilen_ausblenden nach ->> Sheet: PDF
With Leerzeilen_ausblenden
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
Set rngBereich = .Range("A1:B" & lngZeileMax + 1)
rngBereich.Copy
End With
Sheets("PDF").Range(lastrow, 2).PasteSpecial
LngZeileMax ist nicht dimensioniert, rngBereich ebenso nicht. Aber ich nehme an, das wird in dem Bereich des Makro erledigt welches du nicht zeigen wolltest :-)
LG,
Klaus M.
Anzeige
AW: .Range(lastrow, 2)
04.10.2021 09:40:39
Klaus
Noch ein bisschen aufgeräumt. Man sieht, dass du viel Copy&Paste benutzt. Gewöhne dir an, Code einheitlich zu beschreiben (nicht einmal cells und einmal Range, um eine Zeile zu ermitteln ...) sonst wird er mit der Zeit unlesbar.

Dim lastRow As Long 'LONG IST KORREKT
With Sheets("PDF")
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 2
End With
'merke dir die ZEILE DER 2. Zelle nach der letzten befüllten Zelle in Spalte B
' kopiere den Bereich aus Sheet: Leerzeilen_ausblenden nach ->> Sheet: PDF
With Sheets("Leerzeilen_ausblenden")
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngBereich = .Range("A1:B" & lngZeileMax + 1)
rngBereich.Copy
End With
Sheets("PDF").Range(lastRow, 2).PasteSpecial

Anzeige
AW: .Range(lastrow, 2)
04.10.2021 10:22:33
Eisi
Hallo Klaus,
vielen Dank für Deine Hilfe. Ich hänge mal den kompletten Code an, weil noch immer eine Fehlermeldung kommt:
Fehlermeldung: Sheets("PDF").Range(lastrow, 2).PasteSpecial
______________________________________________________________________________

Sub PlattenKopieren()
Application.ScreenUpdating = False
'*** Deklaration ***
Dim lngZeileMax As Long
Dim rngBereich As Range
Dim lastrow   As Long
'*** merke dir die 2. Zelle nach der letzten befüllten Zelle in Spalte B ***
'        lastrow = Worksheets("PDF").Range("B2000").End(xlUp).Row + 2
'*** Zelleninhalte mit Formatierung im Sheet: PDF löschen ***
PDF.Activate
Range("F1").Activate
With ActiveCell.CurrentRegion
.Clear                                    'Clear löscht den Inhalt + Formatierung
End With
'*** merke dir die ZEILE DER 2. Zelle nach der letzten befüllten Zelle in Spalte B ***
With Sheets("PDF")
lastrow = .Cells(.Rows.Count, 2).End(xlUp).Row + 2
End With
'*** kopiere den Bereich aus Sheet: Leerzeilen ausblenden
With Sheets("Leerzeilen ausblenden")
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngBereich = .Range("A1:B" & lngZeileMax + 1)
rngBereich.Copy
End With
'*** Füge die Kopie (rngBereich) in das ->> Sheet: PDF ein ***
Sheets("PDF").Range(lastrow, 2).PasteSpecial    ' ? Hier kommt die Fehlermeldung ?
'*** Letzte Zellen der Tabelle in Sheet ->> PDF: Dicke Linie erzeugen ***
PDF.Activate
Range("F1").Activate
With ActiveCell.CurrentRegion
.Borders(xlEdgeBottom).Weight = xlMedium  'Dicke Linie am Ende der Tabelle erzeugen
End With
'*** Zurück zum AusgangsSheet springen ***    '
Leerzeilen_ausblenden.Activate
Range("A1").Activate
endmacro:
Application.ScreenUpdating = True
End Sub
_________________________________________________________________
Vielen Dank :-)
VG Eisi :-)
Anzeige
AW: .Range(lastrow, 2)
04.10.2021 11:03:57
Klaus
Moin,
müsste eigentlich funktionieren. Nur aus Spaß, setzt "PDF.activate" mal VOR das Pastespecial, vielleicht hilft das schon.
auf .select und .activate sollte man möglichst verzichten. Kannst du einmal eine Musterdatei hochladen, dann schaue ich mir das genau an. Nur mit dem Code kann ich ja nicht gut testen.
LG,
Klaus M.
AW: .Range(lastrow, 2)
04.10.2021 11:29:16
Klaus
Schnell gelöst:

'*** 5) Füge die Kopie (rngBereich) in das ->> Sheet: PDF ein ***
'    PDF.Activate  'Hat keine Auswirkung
Sheets("PDF").Cells(lastrow, 2).PasteSpecial  'CELLS, nicht RANGE!
ich poste gleich nochmal eine Verbesserung.
LG,
Klaus M.
Anzeige
AW: .Range(lastrow, 2)
04.10.2021 11:36:35
Klaus
Was die "CurrentRegion" Sache macht habe ich nicht verstanden - Fette Linien hat sie bei mir nicht erzeugt, und warum sie auf F1 abziehlt war mir auch nicht klar. Darum habe ich das rausgeworfen. Das Makro sollte so bereits ausreichend sein, habe die Reihenfolge geändert und die WITH-Blöcke zusammen gezogen um zu kürzen. Select und Activate habe ich entfernt.

Sub PlattenKopieren()
Application.ScreenUpdating = False
'*** 1) Deklaration ***
Dim lngZeileMax As Long
Dim rngBereich As Range
Dim lastrow   As Long
'*** 4) kopiere den Bereich aus Sheet: Leerzeilen ausblenden
With Leerzeilen_ausblenden
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngBereich = .Range("A1:B" & lngZeileMax + 1)
rngBereich.Copy
End With
'*** 3) merke dir die ZEILE DER 2. Zelle nach der letzten befüllten Zelle in Spalte B ***
With PDF
lastrow = .Cells(.Rows.Count, 2).End(xlUp).Row + 2
'*** 5) Füge die Kopie (rngBereich) in das ->> Sheet: PDF ein ***
.Cells(lastrow, 2).PasteSpecial  'CELLS, nicht RANGE!
End With
Application.ScreenUpdating = True
End Sub
LG,
Klaus M.
Anzeige
AW: .Range(lastrow, 2)
04.10.2021 11:58:11
Eisi
Hallo Klaus,
vielen herzlichen Dank, läuft perfekt. :-)
Folgenden Code brauche ich, wenn die Zelle innerhalb der Tabelle leer ist und ich diese ausblende. Dann ist der Zellenrahmen mit einer dünnen Linie gesetzt.
Als Endergebnis soll aber um die neue Tabelle komplett immer eine dicke Linie eingestellt sein. Die Linien oben, links und rechts der Tabelle sind immer dick, nur die untere Linie eben nicht immer. Darum der Code.
With ActiveCell.CurrentRegion
.Borders(xlEdgeBottom).Weight = xlMedium 'Dicke Linie am Ende der Tabelle erzeugen
End With
Nochmal vielen herzlichen Dank für Deine super Unterstützung.
GLG Eisi :-)
Anzeige
Rückfrage an Klaus____AW: .Range(lastrow, 2)
04.10.2021 15:49:16
Eisi
https://www.herber.de/bbs/user/148428.xlsm
Hallo Klaus,
ich hänge immer noch. Wie kann ich in den Zellen B:C den Rahmen setzen? Siehe bitte Datei im Anhang.
'*** 5) Formatiere die Linie dick in der letzten Tabelle, der letzten Zeile
With PDF
lngZeileMaxFormat = .Cells(.Rows.Count, 3).End(xlUp).Row ' Finde die letzte Zelle in Spalte 3
Set rngBereichFormat = .Range("B" & lngZeileMaxFormat) ' Markiere die letzten Zellen in Spalte B:C 'Hier kommt die Fehlermeldung !!!!!!!!!!!!!!!!!!
rngBereichFormat.Borders(xlEdgeBottom).Weight = xlMedium
End With
Vielen Dank.
VG
Eisi :-)
Anzeige
gelöst :-) ____AW: .Range(lastrow, 2)
04.10.2021 16:52:02
Eisi
Unfassbar, ich habe die Lösung gefunden :-)
'*** 5) Formatiere die Linie dick in der letzten Tabelle, der letzten Zeile
With PDF
Set rngBereichFormat = .Range("B1:C" & .Range("C" & Rows.Count).End(xlUp).Row)
rngBereichFormat.Borders(xlEdgeBottom).Weight = xlMedium
End With
gut gemacht! o.w.T.
05.10.2021 06:58:36
Klaus
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige