Clever-Excel-Forum

Normale Version: Aus Range nur Zellwerte per VBA kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Werte Excel-Freunde,

Ich habe ein Problem beim kopieren von Zellinhalten und deren Formatierungen via VBA. Ich habe bereits ein funktionieren Code zum Kopieren eines Zellbereiches vorhanden. Im konkreten Fall:

Code:
Sub Hinzufügen()

Dim lngZiel As Long
Dim lngLetzte As Long
Dim rngBereich As Range

  lngLetzte = Cells(Rows.Count, 28).End(xlUp).Row
  Set rngBereich = ActiveSheet.Range("U40:AB" & lngLetzte + 1)
       With ActiveSheet.UsedRange
       lngZiel = .Cells(.Rows.Count, 14).End(xlUp).Row + 7
       If lngZiel < 40 Then lngZiel = 40
''      wenn nur die eingeblendeten Zeilen kopiert werden sollen
       rngBereich.Copy .Range("L" & lngZiel)
       Application.CutCopyMode = False
  End With
End Sub

Leider werden mir aber anstatt der Werte, die Formel aus dem zu kopierenden Bereich kopiert und führt nach dem einfügen natürlich zu Zellbezugsfehlern. Es sollen aber nur die Werte im Zielbereich auftauchen. Habe schon andere Varianten gefunden (SpecialPaste, Destination, etc.) - [Wobei hier auch eine Destination .Range("L" & IngZiel) verwendet wird], konnte diese aber nicht zum laufen bringen.

In der Testdatei ist es der Tabellenreiter "Leistungen". Die Kopierfunktion wird im selben Tabellenblatt ausgeführt.

Grüße

Hellidor
Hallo

wie man nur die Werte kopiert das gibt einem ein aufgezeichnetes Makro wunderbar wieder
das würde dann in deinem Fall wohl so aussehen


Code:
Sub Hinzufügen()

Dim lngZiel As Long
Dim lngLetzte As Long
Dim rngBereich As Range

  lngLetzte = Cells(Rows.Count, 28).End(xlUp).Row
  Set rngBereich = ActiveSheet.Range("U40:AB" & lngLetzte + 1)
       With ActiveSheet.UsedRange
       lngZiel = .Cells(.Rows.Count, 14).End(xlUp).Row + 7
       If lngZiel < 40 Then lngZiel = 40
''      wenn nur die eingeblendeten Zeilen kopiert werden sollen
       rngBereich.Copy
       .Range("L" & lngZiel).PasteSpecial Paste:=xlPasteValues
       Application.CutCopyMode = False
  End With
End Sub

mal davon abgesehen, dass du dir im aktiven Tabellenblatt die With-Anweisung sparen kannst

MfG Tom