Excel VBA Makro für Copy/paste
#11
Hallo,

(29.06.2015, 08:26)Gigbert62 schrieb: von "5" bis "33" nur Werte kopieren, von "34" bis "35" die Formeln kopieren, von "36" bis "55" wieder nur Werte kopieren.

Du meinst hier Zeilen? Das halte ich für ungünstig wenn sich innerhalb einer Tabelle das Format ändert, siehe auch hier

Und noch eine Bitte: Zitiere nicht den gesamten Text vom Beitrag.
Gruß Stefan
Win 10 / Office 2016
Top
#12
Hi Stefan,
das mit dem zitieren vom gesamten Text sei mir, einem "Neuling" im Forum geschuldet, bin immer auf Antworten gegangen. Versuche mich zu bessern .... jetzt antworte ich mit "Schnellantwort" und hoffe es passt dann.

Zu dem eigentlichen Thema, der Andre (schauan) hat mir schon wesentlich und eigentlich Final geholfen den Code so hinzubekommen wie es sein sollte, ich hatte leider übersehen ,das bei den Kopieren (von Verweisen und Formeln) und dem nachfolgenden Einfügen immer eine Zeile tiefer als "nur Wert", bei 2 Spalten die Formel erhalten werden muss. War mein Fehler bei der Fragestellung.

Zur Zeit ist es so kodiert das immer eine Zeile gefunden wird wenn ein Begriff in Spalte "C gefunden wird, dann wird in der gleichen Zeile von "5" - "55" kopiert und immer eine Zeile tiefer als "nur WERT" eingefügt.
Und da bräuchte ich jetzt quasi ein "Splitt", wenn man das so sagen kann:

von "5" bis "33" nur Werte kopieren, von "34" bis "35" die Formeln kopieren, von "36" bis "55" wieder nur Werte kopieren.

Der Code, so wie er zur Zeit funktioniert, ist in meiner letzten Antwort an den Andre.

Danke und Gruß
Dirk
Top
#13
Hallo,

versuchs mal anstatt so

Code:
   Cells(lRow + 1, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False

so

Code:
   Cells(lRow + 1, 5).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
Gruß Stefan
Win 10 / Office 2016
Top
#14
Hallo Stefan,
danke für den Tipp, hatte ich schon versucht. Leider darf ich nicht alle Formeln aus der Quellzeile kopieren und anfügen, sondern nur die aus den Spalten 34 und 35, alle anderen sollen als "nur Wert" eingefügt werden.

von Spalte "5" bis "33" nur Werte einfügen, von Spalte "34" bis "35" die Formeln einfügen, von Spalte "36" bis "55" wieder nur Werte einfügen.

Gruß
Dirk
Top
#15
Hallo Dirk,

im Prinzip kannst Du z.B. in zwei Schritten vorgehen.
Zuerst trägst Du im kompletten Bereich die Werte ein, also mit ... PasteValues ....

Anschließend kopierst Du nochmal die beiden Zellen
Range(Cells(lRow, 34), Cells(lRow, 35)).Copy
und fügst sie ensprechend ein.
Cells(lRow + 1, 34).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#16
Hi Andre,
genau das mit dem 2 Schritten hatte ich heut morgen versucht nur hat nicht so geklappt. Ich dachte ich müsste wieder eine Zeile "hochrutschen" um die Formel zu kopieren. Typischer Anfänger Gedankenfehler nehme ich an Smile

Habe eben Deinen Code eingefügt und klappt sofort.

Herzlichen Dank an alle und besonders an Andre.. damit ist das Thema aber jetzt wirklich abgeschlossen.

Hier noch einmal der finale Code falls noch jemand diese Methode anwenden möchte:

Code:
Sub Copy_Paste_Value_RunPlan()
' Copy_Paste_Value_RP Makro
' Sucht nach einem bestimmten Begriff in bestimmter Spalte
' Kopiert alle Daten aus der Reihe SAP_PLan von Spalte X bis Y und fügt in die nächste Zeile als "Wert" ein
' Spalte 33 und 34 werden im zweiten Schritt als Formel eingefügt (kopiert aus der Originalzeile)
' 27.06.15
'
'Variablendeklarationen
'Long
Dim lRow As Long
'String
Dim strTreffer As String
'Range
Dim rngCell As Range
 
  'In Spalte C Suchbegriff finden
  Columns("C:C").Find(What:="SAP_PLAN", After:=Cells(5, 3), LookIn:=xlFormulas, _
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
      MatchCase:=False, SearchFormat:=False).Activate
  strTreffer = ActiveCell.Address
  'Schleife ueber alle Treffer
  Do
    Set rngCell = ActiveCell
    'Zeilennummer der aktiven Zelle feststellen
    lRow = ActiveCell.Row
    'Bereich ab Spalte E kopieren und unterhalb einfuegen
    Range(Cells(lRow, 5), Cells(lRow, 55)).Copy
     ' Hier werden die gefilterten Daten ans Ende der Datei kopiert
     'Cells(Cells(Rows.Count, 5).End(xlUp).Row + 1, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     ' :=False, Transpose:=False
     ' Hier werden die Daten direkt in die darunterliegend Zeile kopiert
    Cells(lRow + 1, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
    Range(Cells(lRow, 33), Cells(lRow, 34)).Copy
    Cells(lRow + 1, 33).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
    'naechste Fundstelle suchen
      Columns("C:C").FindNext(After:=rngCell).Activate
       'Ende Schleife ueber alle Treffer, wenn erster Treffer wieder erreicht ist
  Loop Until ActiveCell.Address = strTreffer
End Sub
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste