Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zeilen ans Tabellenende automatisch einfügen





Frage

Hallo, ich brauch mal wieder Eure Hilfe. Habe eine Tabelle, wo Zeilen aus Tabelle 1 mit Hilfe eines Makros hinenkopiert werden. Das Problem ist, da immer unterschiedlich viele Zeilen in die Tabelle kopiert werden, habe ich auch unterschiedlich viele Seiten die ausgedruckt werden. Jetzt möchte ich drei Zeilen immer mit in die neue Tabelle kopieren, die aber erst auf der letzten Seite ganz unten auftauchen sollen. Ist das irgenwie machbar??? Es kann ja sein, das die letzte Seite nur zur Hälfte mit daten befüllt ist. Vielen Dank für Eure Hilfe!!! Gruß Elhamplo

Antwort 1 von Saarbauer

Hallo,

letzteZeile = Range("A65536").End(xlUp).Row
letzteSpalte = Range("IV1").End(xlToLeft).Column

darüber kannst die letzte Spalte und Zeile ermitteln, hier in Spalte A bzw. Zeile 1

Gruß

Helmut

Antwort 2 von JoeKe

Hallo Elhamplo,

versuch es mal hiermit:

Option Explicit

Sub Seitenzahl()
Dim iSeiten As Integer, iUmbruch As Integer, loZeile As Long
iSeiten = ExecuteExcel4Macro("Get.Document(50)")
If iSeiten = 1 Then
MsgBox "Es ist nur eine Seite vorhanden!"
Else
iUmbruch = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64)," & iSeiten - 1 & ")")
loZeile = (iUmbruch - 1) + (iUmbruch - 1) / (iSeiten - 1)
Cells(loZeile, 1) = "letzte"
Cells(loZeile - 1, 1) = "vorletzte"
Cells(loZeile - 2, 1) = "die davor"
End If
End Sub


Der Code funktioniert allerdings nur, wenn alle Zellen die selbe Höhe haben.

Gruß

JöKe

Antwort 3 von Elhamplo

Hallo,

ich danke Euch für Eure Hilfe!

Leider weiss ich nicht wie ich das hinbekomme immer die gleichen Zeilen aus Tabellenblatt 1 in das Zweite Tabellenblatt ans Ende der letzten Seite kopiert werden.

Hat jemand noch eine Idee???

Der Ursprungs Code kommt von Dir JöKe .

https://supportnet.de/threads/1416313

Vielen, vilen Dank!!!

Gruß

Elhamplo

Antwort 4 von JoeKe

Hallo Elhamplo,

das ist nicht so leicht zu machen, da die Seitenzahl von der Zeilenhöhe abhängig ist.
Folgender erweiterter Code ist für eine Zeilen von 10 Punkte ausgelegt.

Option Explicit


Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String

Dim iSeiten As Integer, iUmbruch As Integer, loZeile As Long
Sheets(Sheets.Count).Select
iSeiten = ExecuteExcel4Macro("Get.Document(50)")
If iSeiten = 1 Then
loZeile = 56
GoTo Weiter
Else
iUmbruch = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64)," & iSeiten - 1 & ")")
loZeile = (iUmbruch - 1) + (iUmbruch - 1) / (iSeiten - 1)
Weiter:
Sheets("Tabelle1").Range("A3:G3").Copy _
Destination:=Sheets(Sheets.Count).Cells(loZeile, 1)
Sheets("Tabelle1").Range("A2:G2").Copy _
Destination:=Sheets(Sheets.Count).Cells(loZeile - 1, 1)
Sheets("Tabelle1").Range("A1:G1").Copy _
Destination:=Sheets(Sheets.Count).Cells(loZeile - 2, 1)
End If


Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
Workbooks(Ziel).Sheets.Add after:=Worksheets(Worksheets.Count)
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
Workbooks(Ziel).PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
Sheets(Sheets.Count).Rows(loZeile & ":" & loZeile - 2) = ""
End Sub

Bei einer anderen Zeilenhöhe muss:

loZeile = 56


entsprchend angepasst werden.

Auch die Bereiche die in die letzte Zeile eingetragen werden sollen müssen angepasst werden.

Sheets("Tabelle1").Range("A3:G3").Copy _
Destination:=Sheets(Sheets.Count).Cells(loZeile, 1)
Sheets("Tabelle1").Range("A2:G2").Copy _
Destination:=Sheets(Sheets.Count).Cells(loZeile - 1, 1)
Sheets("Tabelle1").Range("A1:G1").Copy _
Destination:=Sheets(Sheets.Count).Cells(loZeile - 2, 1)


Gruß

JöKe

Antwort 5 von Elhamplo

Hallo JöKe,

Danke das Du Dir immer die Zeit nimmst. Leider klappt das nicht so. Könnte man das nichtr mit diesem Code kombinieren???


Option Explicit

Private Sub CommandButton1_Click()
Dim loLetzte1 As Long, loLetzte2 As Long
Application.ScreenUpdating = False
loLetzte1 = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
loLetzte2 = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If loLetzte2 < 15 Then
loLetzte2 = 15
End If
Sheets("Tabelle1").Columns("A:E").AutoFilter Field:=1, Criteria1:="x"
Sheets("Tabelle1").Columns("A:E").AutoFilter Field:=3, Criteria1:="<>"
Sheets("Tabelle1").Range(Cells(2, 2), Cells(loLetzte1, 5)).SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle2").Cells(loLetzte2, 1).PasteSpecial
Selection.AutoFilter
Sheets("Tabelle2").Select
With Selection.Borders(xlEdgeLeft)
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.Weight = xlMedium
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Dieser Code von Dir kopiert ja die Zeilen wo in Spalte A ein x steht die Zeilen in ein anderes Tabellenblatt. Kann man jetzt nicht einfach sagen: die Zeilen 397 - 400 werden immer ganz unten auft die letzte Seite kopiert???

Ich danke Dir!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Gruß

Elhamplo

Antwort 6 von JoeKe

Moin Elhamplo,

Private Sub CommandButton1_Click()
Dim loLetzte1 As Long, loLetzte2 As Long

Dim iSeiten As Integer, iUmbruch As Integer, loZeile As Long

Application.ScreenUpdating = False
loLetzte1 = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
loLetzte2 = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If loLetzte2 < 15 Then
loLetzte2 = 15
End If
Sheets("Tabelle1").Columns("A:E").AutoFilter Field:=1, Criteria1:="x"
Sheets("Tabelle1").Columns("A:E").AutoFilter Field:=3, Criteria1:="<>"
Sheets("Tabelle1").Range(Cells(2, 2), Cells(loLetzte1, 5)).SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle2").Cells(loLetzte2, 1).PasteSpecial
Selection.AutoFilter
Sheets("Tabelle2").Select
With Selection.Borders(xlEdgeLeft)
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.Weight = xlMedium
End With
Application.CutCopyMode = False

Sheets("Tabelle2").Select
iSeiten = ExecuteExcel4Macro("Get.Document(50)")
If iSeiten = 1 Then
loZeile = 56
GoTo Weiter
Else
iUmbruch = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64)," & iSeiten - 1 & ")")
loZeile = (iUmbruch - 1) + (iUmbruch - 1) / (iSeiten - 1)
Weiter:
Sheets("Tabelle1").Range("A397:G400").Copy _
Destination:=Sheets("Tabelle2").Cells(loZeile - 4, 1)
End If


Application.ScreenUpdating = True
End Sub

Gruß

JöKe

Antwort 7 von JoeKe

Destination:=Sheets("Tabelle2").Cells(loZeile - 4, 1)

hier muss es -3 sein.

Antwort 8 von Elhamplo

Hallo,

Sorry, das ich mich erst jetzt melde. Hab einen kleinen Urlaub gemacht und hatte kein Rechner dabei.

SUPER!!!!! Danke, danke, danke!!!!!!

Funktioniert genauso wie ich mir das dachte!!!!

Danke das Du mir so geholfen hast!!

Einfach klasse!!!

Gruß

Elhamplo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: