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 |