Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

kopieren mit Makro

kopieren mit Makro
13.07.2006 13:31:02
Carola
Hallo zusammen !
Wie muss ein Makro aufgebaut sein das die Inhalte der Zellen H40 bis H45 und H50 bis H55 kopiert und in Tabellenblatt 2 in Spalte A bis L einfügt ( also in der ersten freien Zeile )
"Ganz Wichtig" ist das die Zellen H40 bis H45 ausgefüllt sind - sonst sollte es die Inhalte nicht kopieren !!
Vielen Dank allen hier im Forum
Carola

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kopieren mit Makro
13.07.2006 14:19:45
Peter
Hallo Carola,
so könnte es gehen - wenn ich alles richtig verstanden habe:
Public

Sub Kopieren()
Dim WkSh_Q    As Worksheet
Dim WkSh_Z    As Worksheet
Dim lZeile_Q  As Long
Dim lZeile_Z  As Long
Dim iSpalte   As Integer
Dim bLeer     As Boolean
Set WkSh_Q = Worksheets("Tabelle1")
Set WkSh_Z = Worksheets("Tabelle2")
For lZeile_Q = 40 To 45
If WkSh_Q.Range("H" & lZeile_Q).Value = "" Then
bLeer = True
Exit For
End If
Next lZeile_Q
If bLeer = True Then
MsgBox "die Zellen H40 bis H45 sind nicht gefüllt - Abbruch.", _
48, "   Hinweis für " & Application.UserName
Exit Sub
End If
lZeile_Z = WkSh_Z.Range("A65536").End(xlUp).Row + 1
iSpalte = 1
For lZeile_Q = 40 To 55
WkSh_Q.Range("H" & lZeile_Q).Copy Destination:=WkSh_Z.Cells(lZeile_Z, iSpalte)
iSpalte = iSpalte + 1
If lZeile_Q = 45 Then lZeile_Q = 50
Next lZeile_Q
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: kopieren mit Makro
13.07.2006 14:24:08
Carola
Werde es heute abend austesten wenn ich daheim bin !!
Vielen Dank Peter !!
Carola
AW: eine kleine Korrektur
13.07.2006 14:32:41
Peter
Hallo Carola,
hier kommt eine kleine, aber wichtige Korrektur
https://www.herber.de/bbs/user/35054.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: kopieren mit Makro - Variante
13.07.2006 14:52:07
fcs
Hallo Carola,
hier eine Variante, die die Kopieren/Transponieren-Funktion von Excel nutzt
mfg
Franz

Sub DatenKopieren()
Dim wbZiel As Workbook, wbQuelle As Workbook, rngDaten1 As Range, rngDaten2 As Range
Dim Zeile As Long, QTab As Variant, ZTab As Variant
Set wbZiel = ActiveWorkbook 'Datei in die die Daten kopiert werden sollen
ZTab = 2 ' Nummer der Zieltabelle, hier kann auch ein Name angegeben werden
Set wbQuelle = ActiveWorkbook 'Datei aus der die Daten kommen
QTab = 1 ' Nummer der Zieltabelle, hier kann auch ein Name angegeben werden
Set rngDaten1 = wbQuelle.Sheets(QTab).Range("H40:H45")
Set rngDaten2 = wbQuelle.Sheets(QTab).Range("H50:H55")
'Überprüfung ob alle Zellen ausgefüllt sind
If Application.WorksheetFunction.CountA(rngDaten1) < rngDaten1.Cells.Count Then
MsgBox "im Bereich " & rngDaten1.Address & " sind nicht alle Zellen ausgefüllt!"
Exit Sub
End If
Application.ScreenUpdating = False
With wbZiel.Sheets(ZTab)
'Nächste freie Zeile in Zieltabelle ermitteln
Zeile = .UsedRange.Row + .UsedRange.Rows.Count
'Alternative Möglichkeit
'Nachfolgend Spalte wählen in der immer Daten stehen!
'Zeile(i) = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
'1. Bereich Kopieren und Inhalte einfügen
rngDaten1.Copy
'.Cells(Zeile, "A").PasteSpecial Paste:=xlFormats, Transpose:=True 'Formate
.Cells(Zeile, "A").PasteSpecial Paste:=xlValues, Transpose:=True 'Werte
'2. Bereich Kopieren und Inhalte einfügen
rngDaten2.Copy
'.Cells(Zeile, "G").PasteSpecial Paste:=xlFormats, Transpose:=True 'Formate
.Cells(Zeile, "G").PasteSpecial Paste:=xlValues, Transpose:=True 'Werte
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: kopieren mit Makro - Variante
13.07.2006 21:21:28
Carola
Vielen Vielen Dank Euch beiden !
Jetzt komme ich bestimmt weiter "Dank Eurer Hilfe"
Werde es heute noch testen !!!!
Carola
AW: kopieren mit Makro - Variante
14.07.2006 11:35:37
Carola
Hallo Ihr Lieben nochmals vielen Dank für die Makros mit der echt guten Erklärung
-Einfach Super von Euch –
-
Problem mit Peters Datei
Die Zahlen und der Text in den Zellen H40 bis H55 kommen aus anderen Zellen (in H40 steht z.Bsp die Formel = E3 weil die Daten aus anderen Zellen kommen ) Nun bekomme ich in Tabellenblatt 2 nur #BEZUG! angezeigt. Auch erkennt er irgendwie nicht das nichts in der Zelle steht wenn dort die Formel = E3 drinsteht.
Problem mit Datei von Franz
Da im Tabellenblatt 2 ab Spalte J bis N Zahlen und Text stehen setzt das Makro die übertragenen Werte ganz ans Ende der Tabelle. Spalten sind schon ausgefüllt bis Zeile 2000
Ihr Lieben wenn Ihr Euch noch einmal kurz mit meinem Problem beschäftigen könntet.
Vielen Vielen Dank
Carola
Anzeige
AW: kopieren mit Makro - Variante
14.07.2006 12:50:41
fcs
Hallo Carola,
passe im Makro folgenden Abschnitt an:

'Nächste freie Zeile in Zieltabelle ermitteln
'Zeile = .UsedRange.Row + .UsedRange.Rows.Count
'Alternative Möglichkeit
'Nachfolgend Spalte wählen in der immer Daten stehen!
Zeile = .Cells(.Rows.Count, "A").End(xlUp).Row + 1

So sucht das Makro immer die nächste leere Zeile in Spalte A
Gruß
Franz
gruss Franz
AW: kopieren mit Makro - Variante
14.07.2006 12:56:23
Carola
Vielen Dank Franz !!!
Gruss Carola
Hallo FCS
14.07.2006 13:25:10
Carola
Vielen Dank Franz !!!
Nur eins noch Bitte ! - WIRKLICH -
da die Werte in den Zellen aus anderen Zellen kommen überträgt das Makro auch wenn die Zellen leer sind - liegt das an der Formatierung oder wie kann ich diesen letzten Fehler noch beheben. In den Zelle H 40 und folgende steht z.Bsp. die Formel =E3
Wenn ich diese Formel lösche dann kommt auch die Meldung das nicht alle Felder ausgefüllt sind.
kann ich Dir für die Bemühungen eine Flasche Wein zukommen lassen ?
Gruss Carola
Anzeige
AW: Hallo FCS
14.07.2006 19:14:19
fcs
Hallo Carola,
da in den Zellen Formeln stehen sind die Zellen natürlich nicht leer, sondern haben ggf. den Wert "". Ich hab die Prozedur zum Überprüfen des Inhalts angepasst. Hoffe es funktioniert jetzt.

Sub DatenKopieren()
Dim wbZiel As Workbook, wbQuelle As Workbook, rngDaten1 As Range, rngDaten2 As Range
Dim Zeile As Long, QTab As Variant, ZTab As Variant, Zelle As Range, Test As Boolean
Set wbZiel = ActiveWorkbook 'Datei in die die Daten kopiert werden sollen
ZTab = 2 ' Nummer der Zieltabelle, hier kann auch ein Name angegeben werden
Set wbQuelle = ActiveWorkbook 'Datei aus der die Daten kommen
QTab = 1 ' Nummer der Zieltabelle, hier kann auch ein Name angegeben werden
Set rngDaten1 = wbQuelle.Sheets(QTab).Range("H40:H45")
Set rngDaten2 = wbQuelle.Sheets(QTab).Range("H50:H55")
'Überprüfung ob alle Zellen ausgefüllt sind
Test = True
For Each Zelle In rngDaten1
If Zelle.Value = "" Then
Test = False
Exit For
End If
Next
If Test = False Then
MsgBox "im Bereich " & rngDaten1.Address & " sind nicht alle Zellen ausgefüllt!"
Exit Sub
End If
Application.ScreenUpdating = False
With wbZiel.Sheets(ZTab)
'Nächste freie Zeile in Spalte A der Zieltabelle ermitteln
'Nachfolgend Spalte wählen in der immer Daten stehen!
Zeile = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
'1. Bereich Kopieren und Inhalte einfügen
rngDaten1.Copy
'.Cells(Zeile, "A").PasteSpecial Paste:=xlFormats, Transpose:=True 'Formate
.Cells(Zeile, "A").PasteSpecial Paste:=xlValues, Transpose:=True 'Werte
'2. Bereich Kopieren und Inhalte einfügen
rngDaten2.Copy
'.Cells(Zeile, "G").PasteSpecial Paste:=xlFormats, Transpose:=True 'Formate
.Cells(Zeile, "G").PasteSpecial Paste:=xlValues, Transpose:=True 'Werte
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

gruss Franz
Anzeige
AW: Hallo FCS
15.07.2006 08:44:41
Carola
"Vielen Vielen Dank Euch Beiden"
Dank Eurer Hilfe habe ich das Problem nun im Griff. Durch die Erklärungen in den Makros verstehe ich jetzt auch was dort abläuft.
Mein Angebot für eine GUTE Fl. Wein für Eure Bemühungen halte ich aufrecht. Müsste halt nur irgendwie an Eure Adresse oder E-Mail kommen.
Ich denke ich werde sicher oft an Eure Hilfe denken wenn ich diese Excel Tabelle öffne.
Gruss Carola
( Nordhessen / Waldeck )
AW: Hallo FCS
14.07.2006 22:17:32
Peter
Hallo Carola,
leider hast du nicht erwähnt, dass deine Daten aus Formeln erzeugt werden.
Dann geht es so:
'
' die Zellen H40 bis H55 werden über Formel gefüllt !!!
'
Public

Sub Kopieren()
Dim WkSh_Q    As Worksheet  ' Quell-TabellenblattT
Dim WkSh_Z    As Worksheet  ' Ziel-Tabellenblatt
Dim lZeile_Q  As Long       ' Zeilen-Index Quell-Tabellenblatt
Dim lZeile_Z  As Long       ' Zeilen-Index Ziel-Tabellenblatt
Dim iSpalte   As Integer    ' die Spalte A bis K im Ziel-Tabellenblatt
Dim bLeer     As Boolean    ' Schalter für alle Zellen H40:H45 gefüllt
Application.ScreenUpdating = False  ' kein Bildschirm-Update
Set WkSh_Q = Worksheets("Tabelle1") ' Quell-Tabellenblatt
Set WkSh_Z = Worksheets("Tabelle2") ' Ziel-Tabellenblatt
For lZeile_Q = 40 To 45  ' prüfen ob H40:H45 gefüllt ist
If WkSh_Q.Range("H" & lZeile_Q).Value = "" Or _
Len(WkSh_Q.Range("H" & lZeile_Q).Value) = 0 Then
bLeer = True       ' merken, wenn eine Zelle nicht gefüllt ist
Exit For           ' und For/Next sofort verlassen
End If
Next lZeile_Q
If bLeer = True Then     ' gab es eine leere Zelle?
MsgBox "die Zellen H40 bis H45 sind nicht alle gefüllt - Abbruch.", _
48, "   Hinweis für " & Application.UserName
Exit 

Sub              ' 

Sub Sofort verlassen - nicht kopieren
End If
'   erste freie Zeile im Ziel-Tabellenblatt finden
lZeile_Z = WkSh_Z.Range("A65536").End(xlUp).Row + 1
iSpalte = 1              ' Spalte auf "A" = 1 setzen
For lZeile_Q = 40 To 55  ' von Quell-Zeile 40 bis 55
WkSh_Z.Cells(lZeile_Z, iSpalte).Value = WkSh_Q.Range("H" & lZeile_Q).Value
iSpalte = iSpalte + 1               ' nächste Spalte
If lZeile_Q = 45 Then lZeile_Q = 49 ' Zeile 45 kopiert, dann bei 50 weiter
Next lZeile_Q
Application.ScreenUpdating = False  ' Bildschirm-Update wieder zulassen
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige