Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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
Bereich Kopieren x mal
29.08.2008 20:39:00
Karel
Hallo Forum,
wie kan mann ein Zellebereich A1:B6 Tabelle2 Kopieren, Anzahl kopieen werden nach eingaben in Zelle G3 bestimmt und untereinander ab Zelle A1 in Tabelle3 eingefügt ohne Formel nur werte und inhalte.
Druckbereich automatisch anpassen in Tabelle3
anbei ein beispiel
https://www.herber.de/bbs/user/55040.xls
Viele Grusse
Karel

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich Kopieren x mal
29.08.2008 22:22:40
Daniel
Hi
im Prinzip so:

Sub test()
Dim Vorlage As Range
Dim Zeilen As Long, Spalten As Long
Set Vorlage = Sheets("Tabelle2").Range("a1:E6")
Spalten = Vorlage.Columns.Count
Zeilen = Vorlage.Rows.Count * Sheets("Tabelle2").Range("G3").Value
With Sheets("Tabelle3").Range("A1").Resize(Zeilen, Spalten)
.EntireColumn.Clear
Vorlage.Copy Destination:=.Cells
.Formula = .Value
End With
End Sub


spaltenbreiten und Zeilenhöhen musst du aber selber noch anpassen.
der Druckbereich passt sich automatisch an, wenn auf dem Excelblatt keine weiteren Daten stehen.
Gruß, Daniel

Anzeige
AW: Bereich Kopieren x mal
30.08.2008 09:18:00
Karel
Hallo Daniel,
stimmt Druckbereich passt sich an.
aber gibt es kein möglichheit spaltenbreiten und Zeilenhöhen (Format) automatische wie im Bereich vorhanden, beim Kopieren mit zu übertragen. Habe es jetzt mit hand angepasst.
Grusse und danke
Karel
AW: Bereich Kopieren x mal
30.08.2008 11:32:00
Ramses
Hallo
Passe die With-Anweisung mal so an
With Sheets("Tabelle3").Range("A1").Resize(Zeilen, Spalten)
.EntireColumn.Clear
Vorlage.Copy Destination:=.Cells
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End With
Die Zeilenhöhen musst du bei Bedarf von Hand anpassen
Gruss Rainer
Anzeige
AW: Bereich Kopieren x mal
30.08.2008 14:15:00
Gerd
Hallo Karel,
die Printarea musst ggf noch setzen u. den Blatt-Zoom übereinstimmend festlegen.

Sub Makro1()
Dim i As Long, offs As Integer
With Sheets("Tabelle3")
.UsedRange.Clear
For i = 1 To Sheets("Tabelle2").Range("G3")
Sheets("Tabelle2").Rows("1:6").Copy _
Destination:=.Cells(.Rows.Count, 1).End(xlUp).Offset(offs)
offs = 1
Next
With .Range(Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 4))
.Cells.Value = .Cells.Value
End With
.Columns("F:IV").Delete
For i = 1 To 5
.Columns(i).ColumnWidth = Sheets("Tabelle2").Columns(i).ColumnWidth
Next
End With
End Sub


Gruß Gerd

Anzeige
AW: Bereich Kopieren x mal
30.08.2008 23:21:23
Karel
Hallo,
etwass spätt aber bin grade zuhause
bekommen bei beide Ramses und Gerd Laufzeitfehler 1004
Spalten kan ich noch einfach mit der hand anpassen (Format übertragen)
Aber Zeilen leider nicht so einfach
habe selbst mit Makrorecorder Zeilen markiert und Format Übertragen (rows select) gemacht aber kom selber damit keine Schritt weiter.
Danke und Gruss
Karel
AW: Bereich Kopieren x mal
31.08.2008 10:08:10
Gerd
Hallo Karel,
-den Code hast Du in ein allgemeines Modul eingefügt?
-die Blatt-(Register-)namen der Quelle u. des Ziels heißen "Tabelle2" u. "Tabelle3" ?
-es war nur deine Beispieldatei beim Test geöffnet ?
Oder hast Du unter anderen nicht mitgeteilten Konstellationen getestet?
Gruß Gerd
Anzeige
AW: Bereich Kopieren x mal
31.08.2008 16:38:26
Erich
Hi Karel,
probier mal

Option Explicit
Sub test()
Dim rngVor As Range, lngZ As Long, lngS As Long, rngR As Range, ii As Long
With Sheets("Tabelle2")
Set rngVor = .Range("A1:E6")
lngS = rngVor.Columns.Count
lngZ = rngVor.Rows.Count * .Range("G3").Value
End With
With Sheets("Tabelle3").Range("A1").Resize(lngZ, lngS)
.EntireColumn.Clear                    ' löschen
rngVor.Copy Destination:=.Cells        ' kopieren
.Formula = .Value                      ' Formeln in Werte
For ii = 1 To lngS                     ' Spaltenbreiten
.Columns(ii).ColumnWidth = rngVor.Columns(ii).ColumnWidth
Next ii
For lngZ = 1 To rngVor.Rows.Count      ' Zeilenhöhen
Set rngR = .Rows(lngZ)
For ii = 1 To Sheets("Tabelle2").Range("G3").Value - 1
Set rngR = Union(rngR, .Rows(lngZ + ii * rngVor.Rows.Count))
Next ii
rngR.RowHeight = rngVor.Rows(lngZ).RowHeight
Next lngZ
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: @Erich G.
31.08.2008 17:14:52
Gerd
Hi Erich,
auch dein Code läuft bei mir in xl2000 über die Beispielmappe, mit der kleinen Einschränkung, dass in B4 der Zieltabelle #WERT!
ausgegeben wird.
Gruß Gerd
AW: Erich G. erwischt
31.08.2008 17:58:00
Erich
Hi Gerd,
ja, das habe ich übersehen. Wegen B4 kann man nicht einfach die Formeln kopieren.
Neue Version:

Option Explicit
Sub test()
Dim rngVor As Range, lngZ As Long, lngS As Long, rngR As Range, ii As Long
With Sheets("Tabelle2")
Set rngVor = .Range("A1:E6")
lngS = rngVor.Columns.Count
lngZ = rngVor.Rows.Count * .Range("G3").Value
End With
With Sheets("Tabelle3").Range("A1").Resize(lngZ, lngS)
.EntireColumn.Clear                    ' löschen
rngVor.Copy                            ' kopieren
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteColumnWidths
Application.CutCopyMode = False
For lngZ = 1 To rngVor.Rows.Count      ' Zeilenhöhen
Set rngR = .Rows(lngZ)
For ii = 1 To Sheets("Tabelle2").Range("G3").Value - 1
Set rngR = Union(rngR, .Rows(lngZ + ii * rngVor.Rows.Count))
Next ii
rngR.RowHeight = rngVor.Rows(lngZ).RowHeight
Next lngZ
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Danke an alle O.T.
31.08.2008 21:18:57
Karel
Lauft einwandfrei
Danke an alle
Grusse
Karel

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige