Wklej i wklej wartość VBASpecjalnie

Ten samouczek pokaże Ci, jak używać PasteSpecial w VBA do wklejania tylko niektórych właściwości komórek (np. wartości, formatów)

W programie Excel podczas kopiowania i wklejania komórki kopiujesz i wklejasz wszystkie właściwości komórki: wartości, formaty, formuły, formatowanie liczb, obramowania itp.:

Zamiast tego możesz "Wklej specjalnie", aby wkleić tylko niektóre właściwości komórki. W programie Excel do menu Wklej specjalnie można uzyskać dostęp za pomocą skrótu CTRL + ALT + V (po skopiowaniu komórki):

Tutaj możesz zobaczyć wszystkie kombinacje właściwości komórki, które możesz wkleić.

Jeśli nagrasz makro podczas korzystania z menu Wklej specjalnie, możesz po prostu użyć wygenerowanego kodu. Jest to często najłatwiejszy sposób użycia VBA do wklejenia specjalnego.

Wklej wartości

Wklej wartości wkleja tylko komórkę „wartość”. Jeśli komórka zawierała formułę, funkcja Wklej wartości spowoduje wklejenie wyniku formuły.

Ten kod skopiuje i wklei wartości dla pojedynczej komórki w tym samym arkuszu:

12 Zakres ("A1").KopiujZakres("B1").PasteSpecial Paste:=xlPasteValues

Kopiuj i wklej wartość do innego arkusza

Ten przykład skopiuje i wklei wartości dla pojedynczych komórek w różnych arkuszach roboczych

12 Arkusze("Arkusz1").Zakres("A1").KopiujArkusze("Arkusz2").Range("B1").PasteSpecial Paste:=xlPasteValues

Poniższe przykłady skopiują i wkleją wartości dla zakresów komórek:

Zakresy kopiowania i wklejania wartości

12 Zakres ("A1:B3").KopiujZakres("C1").PasteSpecial Paste:=xlPasteValues

Kolumny kopiowania i wklejania wartości

12 Kolumny("A").KopiujColumns("B").PasteSpecial Paste:=xlPasteValues

Kopiuj i wklejaj wartości

12 Wiersze(1).KopiujRows(2).PasteSpecial Paste:=xlPasteValues

Wklej wartości i formaty liczb

Wklejanie wartości spowoduje tylko wklejenie wartości komórki. Nie jest wklejane żadne formatowanie, w tym formatowanie liczb.

Często podczas wklejania wartości prawdopodobnie będziesz chciał uwzględnić również formatowanie liczb, aby Twoje wartości pozostały sformatowane. Spójrzmy na przykład.

Tutaj wartości wklejamy komórkę zawierającą procent:

12 Arkusze("Arkusz1").Kolumny("D").KopiujArkusze("Arkusz2").Columns("B").PasteSpecial Paste:=xlPasteValues

Zauważ, że formatowanie liczb procentowych zostało utracone, a zamiast tego wyświetlana jest niechlujna wartość dziesiętna.

Zamiast tego użyjmy formatów wklejania wartości i liczb:

12 Arkusze("Arkusz1").Kolumny("D").KopiujSheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats

Teraz możesz zobaczyć, że formatowanie liczb jest również wklejane, zachowując format procentowy.

.Wartość zamiast .Wklej

Zamiast wklejania wartości możesz użyć właściwości Value obiektu Range:

To ustawi wartość komórki A2 równą wartości komórki B2

1 Zakres("A2").Wartość = Zakres("B2").Wartość

Możesz także ustawić zakres komórek równy wartości pojedynczej komórki:

1 Zakres("A2:C5").Wartość = Zakres("A1").Wartość

lub zakres komórek równy innemu zakresowi komórek o identycznej wielkości:

1 Zakres("B2:D4").Wartość = Zakres("A1:C3").Wartość

Korzystanie z właściwości Value to mniej pisania. Ponadto, jeśli chcesz biegle posługiwać się Excel VBA, powinieneś znać pracę z właściwością Value komórek.

Wartość komórki a właściwość Wartość2

Z technicznego punktu widzenia lepiej jest użyć właściwości Value2 komórki. Wartość2 jest nieco szybsza (ma to znaczenie tylko przy bardzo dużych obliczeniach), a właściwość Value może dać obcięty wynik, w którym komórka jest sformatowana jako waluta lub data. Jednak ponad 99% kodu, który widziałem, używa .Value, a nie .Value2. Osobiście nie używam .Value2, ale powinieneś mieć świadomość, że istnieje.

1 Zakres("A2").Value2 = Zakres("B2").Value2

Kopiuj Wklej Konstruktor

Stworzyliśmy "Kopiuj wklej kod Builder", który ułatwia generowanie kodu VBA do kopiowania (lub wycinania) i wklejania komórek. Konstruktor jest częścią naszego Dodatek VBA: Automakro.

Automakro zawiera również wiele innych Generatory kodu, obszerny Biblioteka kodówi potężny Narzędzia do kodowania.

Wklej specjalnie - formaty i formuły

Oprócz wartości wklejania, najczęstszymi opcjami wklejania specjalnego są formaty wklejania i formuły wklejania

Wklej formaty

Formaty wklejania umożliwiają wklejenie całego formatowania komórek.

12 Zakres ("A1:A10").KopiujZakres("B1:B10").PasteSpecial Paste:=xlPasteFormats

Wklej formuły

Wklej formuły wkleją tylko formuły komórek. Jest to również niezwykle przydatne, jeśli chcesz kopiować formuły komórek, ale nie chcesz kopiować kolorów tła komórek (lub innego formatowania komórek).

12 Zakres ("A1:A10").KopiujZakres("B1:B10").PasteSpecial Paste:=xlPasteFormules

Wklej formuły i formaty liczb

Podobnie jak w przypadku wklejania wartości i formatów liczb powyżej, możesz również kopiować i wklejać formaty liczb wraz z formułami

Tutaj skopiujemy formułę komórki tylko z formatowaniem liczb księgowych i formułami wklejania.

12 Arkusze("Arkusz1").Zakres("D3").KopiujArkusze("Arkusz2").Range("D3").PasteSpecial xlPasteFormules

Zauważ, że formatowanie liczb jest tracone, a zamiast tego wyświetlana jest niechlujna niezaokrąglona wartość.

Zamiast tego użyjmy formatów wklejania formuł i liczb:

12 Arkusze("Arkusz1").Zakres("D3").KopiujArkusze("Arkusz2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats

Teraz możesz zobaczyć, że formatowanie liczb jest również wklejone, zachowując format Księgowość.

Wklej specjalnie - transpozycja i pomijanie pustych miejsc

Wklej specjalnie - Transpozycja

Wklej specjalnie Transpozycja umożliwia kopiowanie i wklejanie komórek zmieniając orientację z góry na dół na lewo-prawo (lub odwrotnie):

12 Arkusze("Arkusz1").Zakres("A1:A5").KopiujArkusze("Arkusz1").Range("B1").PasteSpecial Transpozycja:=True

Wklej specjalnie - Pomiń puste miejsca

Pomiń puste miejsca to specjalna opcja wklejania, która nie wydaje się być używana tak często, jak powinna. Pozwala kopiować tylko niepuste komórki podczas kopiowania i wklejania. Więc puste komórki nie są kopiowane.

W tym przykładzie poniżej. Skopiujemy kolumnę A, zrobimy zwykłe wklejanie w kolumnie B i pominiemy puste wklejanie w kolumnie C. Możesz zobaczyć, że puste komórki nie zostały wklejone do kolumny C na poniższym obrazku.

123 Arkusze("Arkusz1").Zakres("A1:A5").KopiujArkusze("Arkusz1").Range("B1").PasteSpecial SkipBlanks:=FalseArkusze("Arkusz1").Range("C1").PasteSpecial SkipBlanks:=True

Inne opcje specjalne wklejania

Wklej specjalnie - Komentarze

1 Arkusze("Arkusz1").Range("A1").Copy Sheets("Arkusz1").Range("E1").PasteSpecial xlPasteComments

Wklej specjalnie - walidacja

12 Arkusze("Arkusz1").Zakres("A1:A4").KopiujArkusze("Arkusz1").Range("B1:B4").PasteSpecial xlPasteValidation

Wklej specjalnie - wszystko przy użyciu motywu źródłowego

123 Skoroszyty(1).Sheets("Arkusz1").Range("A1:A2").CopySkoroszyty(2).Sheets("Arkusz1").Range("A1").PasteSpecialSkoroszyty(2).Sheets("Arkusz1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

Wklej specjalnie - wszystko oprócz obramowań

123 Zakres("B2:C3").KopiujZakres ("E2").PasteSpecialZakres("H2").PasteSpecial xlPasteAllExceptBorders

PasteSpecial - Szerokości kolumn

Mój osobisty faworyt. PasteSpecial Column Widths skopiuje i wklei szerokość kolumn.

123 Zakres ("A1:A2").KopiujZakres("C1").PasteSpecialZakres("E1").PasteSpecial xlPasteColumnWidths

WklejSpecjalnie - Wszystkie scalające formaty warunkowe

123 Zakres ("A1:A4").KopiujZakres("C1").PasteSpecialZakres ("E1")

wave wave wave wave wave