Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

Copy, Paste

Copy, Paste
23.04.2014 11:37:29
Shayev
Hallo zusammen, ich möchte in meiner Excelarbeitsmappe abfragen,ob meine Tabellenblätter aus den ersten 8 Buchstaben den Namen Assembly besitzen? Falls ja, es können mehrere Arbeitsblätter sein mit den Anfangsbuchstaben Assembly, dann soll jeweils aus dem "Assembly" Blatt ein bestimmter Inhalt kopiert werden und in die Line Balancing Summary Data eingefügt werden.
So schaut mein VBA Code aus, leider funktioniert es noch nicht!!
Sub Test()
For i = 1 To Worksheets.Count
If Left(Worksheets(i).Name, 8) = "Assembly" Then
Range("B7").Select
Range(Selection, Selection.End(xlDown)).Select
Range("B7:N26").Select
Selection.Copy
Sheets("Line Balancing Summary Data").Select
Range("B754").Select
Selection.End(xlUp).Select
Range("B47").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next i
End Sub
Danke im Voraus
Shayev

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Konsolidieren, statt Copy Paste
23.04.2014 12:21:37
EtoPHG
Hallo Shayev,
Zitat:".. leider funktioniert es noch nicht!!" ist keine genügende Fehlerbeschreibung um eine Problemanalyse zu machen.
Die Befehle .Select und .Activate sind in VBA zu 99.9% überfüssig und kontraproduktiv.
Wenn die Blätter (und das Summary) den gleichen Aufbau haben, dann würde sich ein -> Konsolidieren (ohne VBA) anbieten.
Gruess Hansueli

AW: Konsolidieren, statt Copy Paste
23.04.2014 12:39:00
Shayev
Hallo Hansueli,
danke für den Tip und die schnelle Rückmeldung, der Code zeigt mir keinen Fehler an! Das Problem ist, dass Excel die Daten aus der Line Balancing Summary Data kopiert und wieder in die Line Balancing Summary Data einfügt. Es sollten aber Daten aus den Tabellenblättern kopiert werden, die mit Assembly anfangen, die dann in die Line Balancing Summary Data untereinander eingefügt werden. Konsolidieren möchte ich gerne vermeiden, denn diesem Code möchte ich eine Schaltfläche zuweisen, dass dann alles automatisiert abläuft. Es soll eine Vorlage sein, die auch andere Nutzer anwenden können. Die "Assembly" Tabellenblätter sind gleich aufgebaut!
Gruß Shayev

Anzeige
AW: Copy, Paste
23.04.2014 12:50:34
Philipp
Hallo Shayev,
Du musst die Bereiche richtig ansprechen.
Range ist keine genaue Addressierung, da Arbeitsmappe und Tabellenblatt fehlen.
Du könntest das in einen With Block einbinden.
With ThisWorkbook.Worksheets(i)
.Range()
End With
Zu dem Select Kram wurde ja schon was gesagt.
Gruß
Philipp

AW: Copy, Paste
23.04.2014 13:42:43
Shayev
Hallo Philipp,
danke für den Tip! Unterhalb der veränderte Code. Leider bekomme ich eine Fehlermeldung "Laufzeitfehler 1004" Die Copy Methode des Range-Objektes konnte nicht ausgeführt werden.
Was mache ich falsch?
Danke im Voraus!
Gruß Shayev
Sub Test()
For i = 1 To Worksheets.Count
If Left(Worksheets(i).Name, 8) = "Assembly" Then
ThisWorkbook.Worksheets(i).Range("B7:N7").End(xlDown).Copy _
Destination:=Worksheets("Line Balancing Summary Data").Range("B65536").End(xlUp).Row + 1
End If
Next i
End Sub

Anzeige
AW: Copy, Paste
23.04.2014 14:29:41
Philipp
Hallo Shayev,
versuch mal die Anpassung hier. Ich schätze, dein direkt gedachter Weg ist wieder zu unpräzise.
    Dim lngTrgLastRow As Long
Dim lngSrcLastRow As Long
lngTrgLastRow = ThisWorkbook.Worksheets("Line Balancing Summary Data").Cells(Rows.Count, 2). _
End(xlUp).Row + 1
For i = 1 To Worksheets.Count
If Left(Worksheets(i).Name, 8) = "Assembly" Then
lngSrcLastRow = ThisWorkbook.Worksheets(i).Cells(Rows.Count, 2).End(xlUp).Row
With ThisWorkbook.Worksheets(i)
.Range(.Cells(7, 2), .Cells(lngSrcLastRow, 14)).Copy _
Destination:=ThisWorkbook.Worksheets("Line Balancing Summary Data").Cells( _
lngTrgLastRow, 2)
End With
End If
Next i
Gruß
Philipp

Anzeige
AW: Copy, Paste
23.04.2014 14:56:40
Shayev
Hallo Philipp,
vielen Dank für deine Mühe,ich habe den von dir geschriebenen Code eingefügt und bekomme leider die gleiche Fehlermeldung "Laufzeitfehler 1004" Die Copy Methode des Range-Objektes konnte nicht ausgeführt werden.
Gruß Shayev

AW: Copy, Paste
23.04.2014 14:58:16
Philipp
Hallo Shayev,
in meiner Beispieldatei funktioniert es. Ich denke, da brauche ich eine Beispieldatei von dir.
Gruß
Philipp

AW: Copy, Paste
23.04.2014 15:10:08
Shayev
Hallo Philipp,
ich habe es hochgeladen, aber finde es selbst nicht, die Datei heißt 90318.zip
Gruß Shayev

Da bietet HWH nun schon den fertigen Link ...
23.04.2014 15:21:07
Luc:-?
…an und manch Einer begreift es trotzdem nicht…!
Link kopieren und hier einfügen!
Mannomann! Luc :-?

Anzeige
AW: Copy, Paste
23.04.2014 15:24:39
Shayev
Noch was beim Einfügen sollen Werte eingefügt werden, damit ich auch dann ein Diagramm erstellen kann!
Gruß Shayev

AW: Copy, Paste
23.04.2014 15:30:57
Shayev
Super danke!!
Gruß Shayev

AW: Copy, Paste
23.04.2014 15:27:48
Philipp
Hallo Shayev,
auch wenn ich die Form der Daten nicht für optimal konsolidierbar halte, hier Problem und Lösung.
Problem: die erste Berechnung der letzten Zeile ergibt 2, aber es ist eine verbundene Zelle. Effektiv ist es also 6.
Lösung: Zuerst manuell 7 als Startzeile vorgeben und danach letzte Zeile berechnen.
Sub neu2()
Dim lngTrgLastRow As Long
Dim lngSrcLastRow As Long
lngTrgLastRow = 7
For i = 1 To Worksheets.Count
If Left(Worksheets(i).Name, 8) = "Assembly" Then
lngSrcLastRow = ThisWorkbook.Worksheets(i).Cells(Rows.Count, 2).End(xlUp).Row
With ThisWorkbook.Worksheets(i)
.Range(.Cells(7, 2), .Cells(lngSrcLastRow, 14)).Copy _
Destination:=ThisWorkbook.Worksheets("Line Balancing Summary Data").Cells( _
lngTrgLastRow, 2)
End With
lngTrgLastRow = ThisWorkbook.Worksheets("Line Balancing Summary Data").Cells(Rows. _
Count, 2).End(xlUp).Row + 1
End If
Next i
End Sub
Gruß
Philipp

Anzeige
AW: Copy, Paste
23.04.2014 15:37:11
Philipp
Hallo Shayev,
bei paste values sieht es dann so aus.
Sub neu2()
Dim lngTrgLastRow As Long
Dim lngSrcLastRow As Long
lngTrgLastRow = 7
For i = 1 To Worksheets.Count
If Left(Worksheets(i).Name, 8) = "Assembly" Then
lngSrcLastRow = ThisWorkbook.Worksheets(i).Cells(Rows.Count, 2).End(xlUp).Row
With ThisWorkbook.Worksheets(i)
.Range(.Cells(7, 2), .Cells(lngSrcLastRow, 14)).Copy
End With
ThisWorkbook.Worksheets("Line Balancing Summary Data").Cells(lngTrgLastRow, 2). _
PasteSpecial Paste:=xlPasteValues
lngTrgLastRow = ThisWorkbook.Worksheets("Line Balancing Summary Data").Cells(Rows.  _
_
Count, 2).End(xlUp).Row + 1
End If
Next i
End Sub
Gruß
Philipp

Anzeige
AW: Copy, Paste
23.04.2014 15:49:12
Shayev
Super vielen, vielen Dank!! :)
Es funktioniert!! Eine Frage, wie würdest du es machen?
Gruß Shayev

AW: Copy, Paste
23.04.2014 16:02:23
Shayev
Eine Frage noch, ist es möglich die hochgeladene Datei zu löschen, falls ja, wie funktioniert es?
Geuß Shayev

AW: Copy, Paste
23.04.2014 16:07:52
Philipp
Hallo Shayev,
schwierig zu sagen wie ich es machen würde, da ich Herkunft, Sinn und Weiterverwendungszweck der Daten nicht kenne.
Eine Möglichkeit wäre z.B. eine Schleife, mit der Du Zeilenweise guckst, ob da Inhalt ist und den dann kopierst.
Du hast halt auch noch eine Summenzeile dazwischen und dann ganz viele Leerzeilen.
Sieht nicht so optimal aus, aber wenn es für deine Weiterverarbeitung reicht, sollte eigentlich alles in Ordnung sein.
Datei löschen weiß ich nicht.
Gruß
Philipp

Anzeige
AW: Copy, Paste
23.04.2014 16:11:52
Shayev
Alles klar,
vielen Dank nochmal!! :))
Gruß Shayev

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige