Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro zum kopieren

Makro zum kopieren
01.10.2007 19:33:20
WalterK
Hallo zusammen,
ich habe eine tabellarische Aufstellung ab Zeile 6 die nach unten offen ist. Spaltenweise sind auch Formeln enthalten. Damit die Datei nicht zu groß wird, schaue ich dazu, dass die Formeln immer ca. 100 Zeilen nach unten „vorkopiert“ sind; und das möchte ich gern automatisieren.
Das Marko sollte folgendes machen:
--- prüfe, in welcher Zeile (egal welcher Spalte) die letzte Eingabe erfolgte
--- prüfe, bis zu welcher Zeile die Formeln und Formate bereits kopiert wurden
--- wenn nur noch 10 vorkopierte Zeilen vorhanden sind, dann kopiere weiter 20 Zeilen hinzu
--- beim kopieren soll alles mitberücksichtigt werden, also Formate, bedingte Formatierungen, Gültigkeiten, Formeln usw.
Besten Dank für Eure Hilfe,
Servus, Walter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum kopieren
01.10.2007 19:47:00
Gerd
Hi,
"...dass die Formeln immer ca. 100 Zeilen nach unten „vorkopiert“ sind..."
"...wenn nur noch 10 vorkopierte Zeilen vorhanden sind, dann kopiere weiter 20 Zeilen hinzu..."
Das widerspricht sich irgendwie, oder?
Kopier einfach jedesmal z.B. 10 und die Datei wird noch weniger groß.
mfg Gerd

AW: Makro zum kopieren
01.10.2007 20:50:45
WalterK
Hallo,
ich will einfach nur, das immer genügend Zeilen "vorkopiert" sind und um das nicht immer händisch zu machen, sollte das ein Makro übernehmen.
Darum sollte das Makro einfach prüfen, ob noch 10 Zeilen vorkopiert sind und wenn nur noch 10 Zeilen vorkopiert sind, sollen weitere 20 Zeilen hinzukopiert werden.
Servus, Walter

Anzeige
AW: Makro zum kopieren
01.10.2007 21:03:00
Josef
Hallo Walter,
kopiere diesen Code in das Modul der entsprechenden Tabelle.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit
Private Const intColumn As Integer = 5 'Eine Spalte die Formeln enthält. Hier als Beispiel Spalte "E" - Anpassen
Private Const intNewRows As Integer = 10 'Anzahl der neuen Zeilen - Anpassen

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngEnd As Long

lngEnd = Cells(Rows.Count, intColumn).End(xlUp).Row

If Target.Row > lngEnd - 10 Then
    Application.EnableEvents = False
    Rows(lngEnd).Copy Rows(lngEnd + 1 & ":" & lngEnd + intNewRows)
    Application.EnableEvents = True
End If

End Sub

Gruß Sepp

Anzeige
AW: Makro zum kopieren
01.10.2007 21:09:48
WalterK
Hallo Sepp,
passt genau, perfekt. (hatte nicht aktualisiert und darum auf offen gestellt).
Besten Dank,
Servus, Walter

AW: noch eine Zusatzfrage
01.10.2007 21:45:05
WalterK
Hallo Sepp,
nachdem ich das Marko zu meinen anderen Codes hinzugefügt habe, funktioniert er nicht mehr.
Diese Zeile wird markiert: lngEnd = Cells(Rows.Count, intColumn).End(xlUp).Row
Der gesamte Code in diesem Tabellenblatt lautet:
Sub Schaltfläche1_BeiKlick()
With ActiveSheet
.Protect UserInterFaceOnly:=True
.Columns("AR:AS").Hidden = Not .Columns("AR:AS").Hidden
End With
End Sub


Sub Schaltfläche266_BeiKlick()
With ActiveSheet
.Protect UserInterFaceOnly:=True
.Columns("AO:AP").Hidden = Not .Columns("AO:AP").Hidden
End With
End Sub


Sub Schaltfläche267_BeiKlick()
With ActiveSheet
.Protect UserInterFaceOnly:=True
.Columns("AT:BK").Hidden = Not .Columns("AT:BK").Hidden
End With
End Sub


Sub Copy20()
Dim rng As Range
With ActiveSheet
.Protect UserInterFaceOnly:=True
Set rng = .Cells(Rows.Count, 22).End(xlUp).EntireRow
rng.Copy
.Rows(rng.Row + 1 & ":" & rng.Row + 20).Insert
Application.CutCopyMode = False
Set rng = Nothing
End With
End Sub


Option Explicit
Private Const intColumn As Integer = 66 'Eine Spalte die Formeln enthält. Hier als Beispiel Spalte "E" - Anpassen
Private Const intNewRows As Integer = 10 'Anzahl der neuen Zeilen - Anpassen


Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngEnd As Long
lngEnd = Cells(Rows.Count, intColumn).End(xlUp).Row
If Target.Row > lngEnd - 10 Then
Application.EnableEvents = False
Rows(lngEnd).Copy Rows(lngEnd + 1 & ":" & lngEnd + intNewRows)
Application.EnableEvents = True
End If
End Sub


Ich habe keine Idee, an was das liegen kann.
PS: Ich weiß auch nicht, warum im Forum der Gesamtcode in sich so unterschiedlich formatiert bzw. dargestellt wird.
Servus, Walter

Anzeige
AW: noch eine Zusatzfrage
01.10.2007 22:00:32
Josef
Hallo Walter,
ausser das der Code in dieser Reihenfolge im Tabellenmodul stehen soll, kann ich keinen Fehler erkennen.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit
Private Const intColumn As Integer = 66 'Eine Spalte die Formeln enthält. Hier als Beispiel Spalte "BN" - Anpassen
Private Const intNewRows As Integer = 10 'Anzahl der neuen Zeilen - Anpassen

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngEnd As Long

lngEnd = Cells(Rows.Count, intColumn).End(xlUp).Row

If Target.Row > lngEnd - 10 Then
    Application.EnableEvents = False
    Rows(lngEnd).Copy Rows(lngEnd + 1 & ":" & lngEnd + intNewRows)
    Application.EnableEvents = True
End If

End Sub

Sub Schaltfläche1_BeiKlick()
With ActiveSheet
    .Protect UserInterFaceOnly:=True
    .Columns("AR:AS").Hidden = Not .Columns("AR:AS").Hidden
End With
End Sub


Sub Schaltfläche266_BeiKlick()
With ActiveSheet
    .Protect UserInterFaceOnly:=True
    .Columns("AO:AP").Hidden = Not .Columns("AO:AP").Hidden
End With
End Sub



Sub Schaltfläche267_BeiKlick()
With ActiveSheet
    .Protect UserInterFaceOnly:=True
    .Columns("AT:BK").Hidden = Not .Columns("AT:BK").Hidden
End With
End Sub



Sub Copy20()
Dim rng As Range

With ActiveSheet
    
    .Protect UserInterFaceOnly:=True
    
    Set rng = .Cells(Rows.Count, 22).End(xlUp).EntireRow
    
    rng.Copy
    .Rows(rng.Row + 1 & ":" & rng.Row + 20).Insert
    Application.CutCopyMode = False
    
    Set rng = Nothing
    
End With

End Sub

Gruß Sepp

Anzeige
AW: bleibt mir ein Rätsel
01.10.2007 22:58:11
WalterK
Hallo Sepp,
nachdem ich Deine Reihenfolge der Codes hineinkopiert habe, kommt auch kein Fehler mehr!
Allerdings, es wird trotzdem nichts mehr nach unten kopiert.
Bei einem nochmaligen Test in einer neuen Tabelle funktioniert wieder einwandfrei.
Ich kann mit vorläufig nicht erklären warum das so ist, werde es aber weitertesten und bedanke mich bei Dir für die Hilfe.
Servus, Walter

AW: noch offen
01.10.2007 21:04:00
WalterK

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige