VBA Değer Yapıştır ve YapıştırÖzel

Bu öğretici, yalnızca belirli hücre özelliklerini (örn. değerler, biçimler) yapıştırmak için VBA'da PasteSpecial'ın nasıl kullanılacağını gösterecektir.

Excel'de, bir hücreyi kopyalayıp yapıştırdığınızda, hücrenin tüm özelliklerini kopyalayıp yapıştırırsınız: değerler, biçimler, formüller, sayı biçimlendirmesi, kenarlıklar, vb.

Bunun yerine, yalnızca belirli hücre özelliklerini yapıştırmak için "Özel Yapıştır" yapabilirsiniz. Excel'de, Özel Yapıştır menüsüne CTRL + ALT + V kısayoluyla erişilebilir (bir hücreyi kopyaladıktan sonra):

Burada yapıştırabileceğiniz hücre özelliklerinin tüm kombinasyonlarını görebilirsiniz.

Yapıştır Özel Menüsü'nü kullanırken bir makro kaydederseniz, oluşturulan kodu kullanmanız yeterlidir. Bu genellikle Özel Yapıştırmak için VBA'yı kullanmanın en kolay yoludur.

Değerleri Yapıştır

Değerleri Yapıştır yalnızca "değer" hücresini yapıştırır. Hücre bir formül içeriyorsa, Değerleri Yapıştır formül sonucunu yapıştırır.

Bu kod, aynı çalışma sayfasındaki tek bir hücre için Değerleri Kopyalayıp Yapıştıracaktır:

12 Aralık("A1").KopyalaRange("B1").PasteSpecial Paste:=xlPasteValues

Farklı Sayfaya Kopyala ve Değer Yapıştır

Bu örnek, farklı çalışma sayfalarındaki tek hücreler için Değerleri Kopyala ve Yapıştır

12 Sayfalar("Sayfa1").Aralık("A1").KopyalaSheets("Sayfa2").Range("B1").PasteSpecial Paste:=xlPasteValues

Bu örnekler, bir hücre aralığı için Değerleri Kopyalayıp Yapıştıracaktır:

Kopyalama ve Değer Yapıştır Aralıkları

12 Aralık("A1:B3").KopyalaRange("C1").PasteSpecial Paste:=xlPasteValues

Sütunları Kopyala ve Değerlendir Yapıştır

12 Sütunlar("A").KopyalaColumns("B").PasteSpecial Paste:=xlPasteValues

Kopyalama ve Değer Yapıştır Satırları

12 Satırlar(1).KopyalaRows(2).PasteSpecial Paste:=xlPasteValues

Değerleri ve Sayı Biçimlerini Yapıştır

Değerleri yapıştırmak yalnızca hücre değerini yapıştırır. Sayı Biçimlendirme dahil hiçbir Biçimlendirme yapıştırılmaz.

Genellikle Değerleri Yapıştırdığınızda, değerlerinizin biçimlendirilmiş kalması için sayı biçimlendirmesini de dahil etmek isteyeceksiniz. Bir örneğe bakalım.

Burada yüzde içeren bir hücreyi yapıştırmaya değer vereceğiz:

12 Sayfalar("Sayfa1").Sütunlar("D").KopyalaSheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues

Yüzde sayı biçimlendirmesinin nasıl kaybolduğuna ve bunun yerine özensiz bir ondalık değerin gösterildiğine dikkat edin.

Bunun yerine Paste Values ​​ve Numbers biçimlerini kullanalım:

12 Sayfalar("Sayfa1").Sütunlar("D").KopyalaSheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats

Artık, yüzde biçimini koruyarak sayı biçimlendirmesinin de yapıştırıldığını görebilirsiniz.

.Paste yerine .Value

Değerleri yapıştırmak yerine, Range nesnesinin Value özelliğini kullanabilirsiniz:

Bu, A2'nin hücre değerini B2'nin hücre değerine eşit olarak ayarlayacaktır.

1 Aralık("A2").Değer = Aralık("B2").Değer

Tek bir hücrenin değerine eşit bir hücre aralığı da ayarlayabilirsiniz:

1 Aralık("A2:C5").Değer = Aralık("A1").Değer

veya başka bir aynı boyuttaki hücre aralığına eşit bir hücre aralığı:

1 Aralık("B2:D4").Değer = Aralık("A1:C3").Değer

Value özelliğini kullanmak daha az yazmaktır. Ayrıca, Excel VBA konusunda uzmanlaşmak istiyorsanız, hücrelerin Value özelliğiyle çalışmaya aşina olmalısınız.

Hücre Değeri ve Value2 Özelliği

Teknik olarak, bir hücrenin Value2 özelliğini kullanmak daha iyidir. Value2 biraz daha hızlıdır (bu yalnızca çok büyük hesaplamalar için önemlidir) ve Value özelliği size hücrenin para birimi veya tarih olarak biçimlendirildiğine dair kesilmiş bir sonuç verebilir. Ancak, gördüğüm kodun %99'dan fazlası .Value2 değil .Value kullanıyor. Ben şahsen .Value2 kullanmıyorum, ancak var olduğunun farkında olmalısınız.

1 Aralık("A2").Değer2 = Aralık("B2").Değer2

Kopyala Yapıştır Oluşturucu

Hücreleri kopyalamak (veya kesmek) ve yapıştırmak için VBA kodu oluşturmayı kolaylaştıran bir "Kopyala Yapıştır Kod Oluşturucu" oluşturduk. İnşaatçı bizim bir parçamızdır. VBA Eklentisi: Otomatik Makro.

Otomatik Makro ayrıca birçok başka içerir Kod Üreticileri, Kapsamlı Kod Kitaplığı, ve güçlü Kodlama Araçları.

Özel Yapıştır - Formatlar ve Formüller

Yapıştır Değerlerinin yanı sıra, en yaygın Özel Yapıştır seçenekleri Yapıştır Formatları ve Yapıştır Formülleridir.

Biçimleri Yapıştır

Yapıştırma biçimleri, tüm hücre biçimlendirmelerini yapıştırmanıza olanak tanır.

12 Aralık("A1:A10").KopyalaRange("B1:B10").PasteSpecial Paste:=xlPasteFormats

Formülleri Yapıştır

Formülleri yapıştır yalnızca hücre formüllerini yapıştırır. Bu, hücre formüllerini kopyalamak istiyorsanız, ancak hücre arka plan renklerini (veya diğer hücre biçimlendirmelerini) kopyalamak istemiyorsanız da son derece kullanışlıdır.

12 Aralık("A1:A10").KopyalaRange("B1:B10").PasteSpecial Paste:=xlPasteFormüller

Formülleri ve Sayı Biçimlerini Yapıştır

Yukarıdaki Değerleri ve Sayı Biçimlerini Yapıştır'a benzer şekilde, formüllerle birlikte sayı biçimlerini de kopyalayıp yapıştırabilirsiniz.

Burada, yalnızca Hesap Numarası Biçimlendirme ve Yapıştırma Formülleri içeren bir hücre formülünü kopyalayacağız.

12 Sayfalar("Sayfa1").Aralık("D3").KopyalaSayfalar("Sayfa2").Range("D3").PasteSpecial xlPasteFormüller

Sayı biçimlendirmesinin nasıl kaybolduğuna ve bunun yerine özensiz, yuvarlanmamış bir değerin gösterildiğine dikkat edin.

Bunun yerine Formülleri ve Sayıları Yapıştır biçimlerini kullanalım:

12 Sayfalar("Sayfa1").Aralık("D3").KopyalaSheets("Sayfa2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats

Artık, Muhasebe biçimini koruyarak sayı biçimlendirmesinin de yapıştırıldığını görebilirsiniz.

Özel Yapıştır - Boşlukları Aktar ve Atla

Özel Yapıştır - Devir

Özel Geçiş Yapıştır, yönlendirmeyi yukarıdan aşağıya doğru değiştirerek (veya tam tersi) hücreleri kopyalayıp yapıştırmanıza olanak tanır:

12 Sayfalar("Sayfa1").Aralık("A1:A5").KopyalaSheets("Sayfa1").Range("B1").PasteSpecial Transpose:=True

Özel Yapıştır - Boşlukları Atla

Boşlukları atla, olması gerektiği kadar sık ​​kullanılmayan özel bir yapıştırma seçeneğidir. Kopyalama ve yapıştırma sırasında yalnızca boş olmayan hücreleri kopyalamanıza olanak tanır. Yani boş hücreler kopyalanmaz.

Aşağıdaki bu örnekte. A sütununu kopyalayacağız, B sütununa normal bir yapıştırma yapacağız ve boşlukları atlayıp C sütununa yapıştıracağız. Aşağıdaki resimde boş hücrelerin C sütununa yapıştırılmadığını görebilirsiniz.

123 Sayfalar("Sayfa1").Aralık("A1:A5").KopyalaSheets("Sayfa1").Range("B1").PasteSpecial SkipBlanks:=YanlışSheets("Sayfa1").Range("C1").PasteSpecial SkipBlanks:=True

Diğer Yapıştır Özel Seçenekler

Özel Yapıştır - Yorumlar

1 Sheets("Sayfa1").Range("A1").Copy Sheets("Sayfa1").Aralık("E1").PasteSpecial xlPasteComments

Özel Yapıştır - Doğrulama

12 Sayfalar("Sayfa1").Aralık("A1:A4").KopyalaSayfalar("Sayfa1").Range("B1:B4").PasteSpecial xlPasteValidation

Özel Yapıştır - Hepsi Kaynak Temayı Kullanıyor

123 Workbooks(1).Sheets("Sayfa1").Range("A1:A2").KopyalaWorkbooks(2).Sheets("Sayfa1").Range("A1").PasteSpecialWorkbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

Özel Yapıştır - Kenarlıklar Hariç Tümü

123 Aralık("B2:C3").KopyalaAralık("E2").YapıştırÖzelRange("H2").PasteSpecial xlPasteAllExceptBorders

PasteSpecial - Sütun Genişlikleri

Benim kişisel favorim. PasteSpecial Column Widths, sütunların genişliğini kopyalayıp yapıştırır.

123 Aralık("A1:A2").KopyalaAralık("C1").YapıştırÖzelRange("E1").PasteSpecial xlPasteColumnWidths

PasteSpecial - Tüm BirleştirmeKoşullu Biçimler

123 Aralık("A1:A4").KopyalaAralık("C1").YapıştırÖzelRange("E1").PasteSpecial xlPasteAllMergingKoşullu Biçimler

wave wave wave wave wave