Niniejszy wpis jest ostrzeżeniem i przypomnieniem dot. operacji wklejania. Zauważyłem ostatnio zarówno w swoich relacjach zawodowych jak i w internecie kilka wpisów sugerujących wątpliwości związane z metodami Paste i PasteSpecial.
Na początek krótki przegląd dostępnych rozwiązań:
1. obiekt Range posiada wyłącznie metodę PasteSpecial
2. obiekt Worksheet posiada metody Paste i PasteSpecial
3. I jako ciekawostkę dodam, że szereg innych obiektów może również posiadać metodę Paste, np. Chart.Paste
A teraz prosty przykład z prawidłowymi zapisami operacji wklejania. Naszym celem jest skopiować zakres komórek A1:A10 z aktywnego arkusza do tego samego arkusza w kolejnych kolumnach B:E. Proszę zwrócić uwagę na dodatkowe komentarze w przykładowym kodzie.
01 | Sub Test_Paste_PasteSpecial() |
06 | Range( "B1" ).PasteSpecial |
10 | Range( "A1:A10" ).Copy Range( "C1" ) |
17 | ActiveSheet.Paste Range( "D1" ) |
21 | ActiveSheet.PasteSpecial |
Sytuacja bardzo podobnie będzie wyglądać w przypadku kopiowania kształtu (figury, wykresu i innych obiektów warstwy rysunkowej). Tu schemat postępowania I dostępne metody będą podobne co obrazuje poniższy przykład:
01 | Sub Kopiowanie_Ksztaltu() |
05 | Set SHP = ActiveSheet.Shapes(1) |
11 | Range( "A20" ).PasteSpecial |
13 | ActiveSheet.Paste Range( "C20" ) |
16 | ActiveSheet.PasteSpecial |