Excel VBA Columns özelliği, bir çalışma sayfasındaki tüm sütunların bir koleksiyonunu ifade eder. VBA kullanarak çalışma sayfasındaki tek tek sütunlara erişmenizi ve bunları düzenlemenizi sağlar. VBA Columns özelliği, VBA'daki Worksheet nesnesinin bir üyesidir ve sütunlarla çalışmak için çeşitli yöntemler ve özellikler sağlar.
Örneğin, çalışma sayfanızda verileriniz varsa ve yalnızca seçili satır veya sütunların yazı tipini veya rengini değiştirmek istiyorsanız VBA Sütunlar özelliğini kullanabilirsiniz.

VBA Sütunları Nasıl Eklenir?
VBA Sütunları eklemek için:
- Sütun eklemek istediğiniz çalışma sayfasını belirleyin.
- Eklemek istediğiniz sütun aralığını belirtmek için çalışma sayfasının “Sütunlar” özelliğini kullanın.
- Belirtilen sütun aralığında VBA Sütun Ekleme yöntemini kullanın.
- İsteğe bağlı olarak, yeni sütunlara uyum sağlamak için mevcut sütunların hangi yöne kaydırılacağını belirlemek üzere "Shift" parametresini belirtin.
Shift, mevcut sütunların yenilerine uyum sağlamak için nasıl kaydırılacağını belirtir. Aşağıdaki değerlerden birini alabilir:

- İsteğe bağlı olarak, eklenen sütunların biçimlendirmesinin ve içeriğinin hangi sütundan kopyalanacağını belirlemek için “CopyOrigin” parametresini belirtin.
“CopyOrigin” eklenen sütunların biçimlendirmesinin ve içeriklerinin hangi sütundan kopyalanacağını belirtir. Aşağıdaki değerlerden birini alabilir:

Aşağıdaki örneklerle bunu daha iyi anlamaya çalışalım.
Örnekler
Farklı senaryolarda VBA Sütunlarının kullanımına dair bazı örneklere bakalım.
Örnek 1 – VBA Sütun Genişliği Özelliği
Bu örnek, bir sütun eklemek ve genişliğini ayarlamak için VBA Sütunları ve VBA Sütunları Genişliği özelliğinin basit bir kullanımını gösterir. Bir çalışma sayfasındaki bazı sütunlar "ABCD" metniyle doldurulur.

- Adım 1: Visual Basic Düzenleyicisini (VBE) açın. VBE'yi açmak için Excel'de Alt + F11 tuşlarına basın veya Excel şeridindeki Geliştirici sekmesine tıklayın ve ardından Visual Basic düğmesine tıklayın.

- Adım 2: Yeni bir modül oluşturun. VBE'de Ekle menüsüne tıklayın ve yeni bir modül oluşturmak için Modül'ü seçin.

- Adım 3: “InsertColumnAndSetWidth()” alt rutinini başlatın.

- Adım 4: Bir değişken tanımlayın ve çalışma sayfası referansını ayarlayın.

Yukarıdaki ilk ifade, bir çalışma sayfası nesnesine referans tutmak için 'ws' adlı bir değişken bildirir.
İkinci ifade “Example_1” adlı çalışma sayfasını ws değişkenine atar. Bu, kodun yürütüleceği çalışma sayfasını ifade eder.
- Adım 5: Bir sütun ekleyin ve kaydırma ve kopyalama kaynağını belirtin:

Yukarıdaki ifade, ws tarafından belirtilen çalışma sayfasındaki B sütununa yeni bir sütun ekler. Shift bağımsız değişkeni xlToRight olarak ayarlanır ve bu, eklenen sütun için yer açmak amacıyla mevcut sütunların sağa kaydırılacağını belirtir.
CopyOrigin argümanı xlFormatFromLeftOrAbove olarak ayarlandığında , eklenen sütunun biçimlendirmesi ve içeriği soldaki veya üstteki sütundan kopyalanacaktır.
- Adım 6: Sütun genişliğini ayarlayın.
ws.Columns(“B”).ColumnWidth = 15, ws tarafından belirtilen çalışma sayfasındaki B sütununun genişliğini 15 birime ayarlar. Bu adım, yeni eklenen sütunun genişliğini ayarlar.

- Adım 7: Modülü kaydedin ve VBA'yı kapatın. Şimdi Makro menüsünü açmak için Alt + F8 tuşlarına basın, “InsertColumnAndSetWidth()” öğesini seçin ve kodu çalıştırın.

- Adım 8: Kodu çalıştırdığınızda, belirtilen çalışma sayfasına yeni bir sütun, Sütun B, eklenir, mevcut sütunlar sağa kaydırılır, biçimlendirme ve içerikler sütundan sola veya yukarıya kopyalanır ve genişliği 15 birime ayarlanır.

KODUN TAMAMI
Sub InsertColumnAndSetWidth()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(“Example_1”)
ws.Columns(“B”).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
ws.Columns(“B”).ColumnWidth = 15
End Sub
Örnek 2 – Değişken Değerine Göre Sütun Seçin
Bu örnek, bir değişken değerine göre bir sütunun nasıl seçileceğini gösterir. Aşağıda bir çalışma sayfasındaki veri kümesi bulunmaktadır.

- Adım 1: Yeni bir modül oluşturun ve “SelectColumnBasedOnVariable” alt rutinini başlatın.”

- Adım 2: Değişkenleri tanımlayın ve çalışma sayfası referansını ayarlayın.

- Yukarıdaki 1. ifade, bir çalışma sayfası nesnesine referans tutacak bir 'ws' değişkeni bildirir.
- Dim columnName As String, sütunun adını saklamak için columnName adında bir değişken tanımlar.
- Daha sonra üçüncü ifadede seçili sütun aralığını tutacak selectedColumn adında bir değişken tanımlıyoruz.
- Set ifadesi, “Example_2” çalışma sayfasını ws değişkenine atar. Kodun yürütüleceği çalışma sayfasını ifade eder.
- Adım 3: Sütun adını ayarlayın.

columnName = “C”, “C” değerini columnName değişkenine atar. Bu, seçilecek sütunun adını belirtir.
- Adım 4: Değişkene bağlı olarak sütunu seçin.

Bu satır, ws tarafından belirtilen çalışma sayfasındaki “columnName” değişkenini kullanarak belirtilen sütunu seçer. Seçilen sütun aralığını “selectedColumn” değişkenine atar.
- Adım 5: Sütun rengini ayarlayın.
Aşağıdaki ifade, seçili sütunun iç rengini yeşil olarak ayarlar. RGB işlevi, renk değerini belirtmek için kullanılır (kırmızı için 0, yeşil için 255 ve mavi için 0), sütun için yeşil bir renkle sonuçlanır.

- Adım 6: Modülü kaydedin ve VBA'yı kapatın. Şimdi Makro menüsünü açmak için Alt + F8 tuşlarına basın ve “SelectColumnBasedOnVariable()”ı seçin. Şimdi kodu çalıştırın..

- Adım 7: Kodu çalıştırdığınızda, “columnName” değişkeninde saklanan değere göre belirtilen çalışma sayfasındaki bir sütun seçilir ve seçilen sütunun iç rengi yeşil olarak ayarlanır.

İşte tam kod:
Sub SelectColumnBasedOnVariable()
Dim ws As Worksheet
Dim columnName As String
Dim selectedColumn As Range
Set ws = ThisWorkbook.Worksheets(“Example_2”)
columnName = “C”
Set selectedColumn = ws.Columns(columnName)
' Sütun rengini yeşil olarak ayarla
selectedColumn.Interior.Color = RGB(0, 255, 0)
End Sub
Örnek 3 – Hücre Değerine Göre Sütun Seç
Bu örnek, belirli bir hücredeki değere göre bir sütunun nasıl seçileceğini gösterir. Lütfen “VBA Sütunları” çalışma sayfasındaki Modül 3'e bakın.
- Adım 1 : Yeni bir modül oluşturun ve “SelectColumnBasedOnCellValue()” alt rutinini başlatın.

- Adım 2: Değişkenleri tanımlayın ve çalışma sayfası referansını ayarlayın.

- Yukarıdaki 1. ifade, bir çalışma sayfası nesnesine referans tutmak için ws adında bir değişken bildirir.
- İfade 2, aranacak değeri saklamak için searchValue adında bir değişken tanımlar.
- İfade 3, aramanın aralığını belirtmek için searchRange adında bir değişken tanımlar.
- İfade 4, arama değerinin bulunduğu sütun aralığını tutacak foundColumn adlı bir değişken tanımlar.
- Set ws = ThisWorkbook.Worksheets(“Example_3”), “Example_3” adlı çalışma sayfasını ws değişkenine atar. Bu, kodun yürütüleceği çalışma sayfasını ifade eder.
- Adım 3 : Arama parametrelerini ayarlayın.

- searchValue = “Arama Metni” searchValue değişkenine “Arama Metni” değerini atar. Aranacak değeri belirtir.
- searchRange = ws.Range(“A1:D1”), belirtilen çalışma sayfasındaki A1 hücresinden D1 hücresine kadar olan aralığı searchRange değişkenine atar. Aramanın gerçekleştirileceği aralığı tanımlar.
- Adım 4: Aramayı gerçekleştirin.

Kod satırı, “searchValue” değerini aramak için “searchRange” üzerindeki Find metodunu kullanır.
" What " parametresi aranacak değeri belirtir, " LookIn " hücre değerlerinde aramayı belirtir ve " LookAt " tüm hücre değeriyle eşleşmeyi belirtir. Sonuç " foundColumn " değişkenine atanır.
- Adım 5: İlgili sütunu seçin ve değerin bulunup bulunmadığını kontrol edin.

- Excel'deki IF ifadesi, arama değerine göre bir eşleşme bulunup bulunmadığını kontrol eder. foundColumn Nothing değilse, bir eşleşme bulunduğu anlamına gelir.
- foundColumn.EntireColumn.Select, EntireColumn özelliğini kullanarak bulunan hücrenin tüm sütununu seçer. Arama değerinin bulunduğu sütunu seçer.
- Adım 6: Modülü kaydedin ve VBA'yı kapatın. Şimdi, Makro menüsünü açın ve “SelectColumnBasedOnCellValue()” öğesini seçin ve kodu çalıştırın,

- Adım 7: Kodu çalıştırdığınızda, çalışma sayfasındaki belirli bir aralıkta belirli bir değeri arar. Değer bulunursa, bulunan hücrenin tüm sütununu seçer.

İşte tam kod:
Sub SelectColumnBasedOnCellValue()
Dim ws As Worksheet
Dim searchValue As String
Dim searchRange As Range
Dim foundColumn As Range
Set ws = ThisWorkbook.Worksheets(“Example_3”)
searchValue = “Search Text”
Set searchRange = ws.Range(“A1:D1”)
‘ Search for the value in the searchRange
Set foundColumn = searchRange.Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)
‘ Check if the value is found and select the corresponding column
If Not foundColumn Is Nothing Then
foundColumn.EntireColumn.Select
End If
End Sub
Örnek 4 – Aralık ve Sütun Özelliğinin Kombinasyonu
Bu örnek, belirtilen bir aralıktaki sütunları eklemek için Aralık ve Sütun özelliklerini birleştirir.

- Adım 1: Yeni bir modül oluşturun ve “InsertColumnsInRange()” alt rutinini başlatın.

- Adım 2 : Değişkenleri bildirin ve çalışma sayfası referansını ayarlayın:

- Dim ifadesi, bir çalışma sayfası nesnesine referans tutmak için ws adlı bir değişken ve sütunların ekleneceği aralığı belirtmek için rng adlı bir değişken tanımlar.
- Set ifadesi “Example_4” çalışma sayfasını ws değişkenine atar.
- Adım 3: Sütunları eklemek istediğiniz aralığı belirtin:

Burada, VBA Set ifadesi belirtilen çalışma sayfasındaki C2:F10 aralığını rng değişkenine atar. Sütunların ekleneceği aralığı tanımlar.
- Adım 4: Sütunları belirtilen aralıkta ekleyin.

Yukarıdaki satır rng aralığına yeni sütunlar ekler. Shift argümanı xlToRight olarak ayarlanır , bu da mevcut sütunların yeni sütunlara uyum sağlamak için sağa kaydırılacağını belirtir.
CopyOrigin argümanı xlFormatFromLeftOrAbove olarak ayarlandığında, eklenen sütunların biçimlendirmesi ve içerikleri soldaki veya üstteki sütunlardan kopyalanacaktır.
- Adım 5: Modülü kaydedin ve VBA'yı kapatın. Makro menüsünü açın, “InsertColumnsInRange()” öğesini seçin ve kodu çalıştırın.

- Adım 6: Çalışma sayfasında belirtilen aralıkta yeni sütunlar ekler. Mevcut sütunlar sağa kayar ve eklenen sütunların biçimlendirmesi ve içerikleri, ekleme noktasının solundaki veya üstündeki sütunlardan kopyalanır.

İşte tam kod:
Sub InsertColumnsInRange()
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Worksheets(“Example_4”)
' Sütunları eklemek istediğiniz aralığı belirtin
Set rng = ws.Range(“C2:F10”)
' Sütunları belirtilen aralıkta ekleyin
rng.Columns.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Örnek 5 – Aralık Nesnesiyle Birden Fazla Sütunu Seçin
Bu örnek, Range nesnesini kullanarak birden fazla sütunun nasıl seçileceğini gösterir . Önceki örneklerle aynı verileri kullanırız.
- Adım 1: Yeni bir modül oluşturun ve “SelectMultipleColumns()” alt rutinini başlatın.

- Adım 2: Değişkenleri tanımlayın ve önceki örneklerde olduğu gibi çalışma sayfası referansını ayarlayın.

- Set ws = ThisWorkbook.Worksheets(“Example_5”), “Example_5” adlı çalışma sayfasını ws değişkenine atar. Bu, kodun yürütüleceği çalışma sayfasını ifade eder.
- Adım 3: Biçimlendirilecek sütunları seçin.

Set ifadesi, belirtilen çalışma sayfasındaki B, D ve F sütunlarını içeren aralığı selectedRange değişkenine atar.
- Adım 4: Seçili sütunları biçimlendirin.

selectedRange.Font.Color = RGB(0, 0, 255), seçili sütunların yazı tipi rengini mavi olarak ayarlar. RGB işlevi, renk değerini belirtmek için kullanılır (kırmızı için 0, yeşil için 0 ve mavi için 255), seçili sütunlar için mavi bir yazı tipi rengiyle sonuçlanır.
- Adım 5: Modülü kaydedin ve VBA'yı kapatın. Şimdi, Makro menüsünü açın ve “SelectMultipleColumns()” öğesini seçin ve çalıştırın.

- Adım 6: Kodu çalıştırdığınızda, belirtilen çalışma sayfasındaki B, D ve F sütunları seçilir ve yazı tipi rengi mavi olarak ayarlanır.

İşte tam kod:
Sub SelectMultipleColumns()
Dim ws As Worksheet
Dim selectedRange As Range
Set ws = ThisWorkbook.Worksheets(“Example_5”)
' B, D ve F sütunlarını seç
Set selectedRange = ws.Range(“B:B,D:D,F:F”)
' Yazı tipi rengini mavi olarak ayarlayarak seçili sütunları biçimlendir
selectedRange.Font.Color = RGB(0, 0, 255)
End Sub
Dikkat Edilmesi Gereken Önemli Noktalar
- Sütunlara, sütun harfi veya sütun indeks numarası kullanılarak başvurulabilir.
- “Sütunlar” özelliği , sütunlar üzerinde gelişmiş işlemler gerçekleştirmek için Aralık gibi diğer VBA işlevleri ve özellikleriyle birleştirilebilir .
- VBA Columns Autofit yöntemi, sütunların genişliğini içlerindeki içeriklere uyacak şekilde otomatik olarak ayarlayabilir. Sütun genişliğini, sütunda bulunan en geniş içeriğe göre ayarlar.
VBA kullanarak sütunları gizlemek için Columns nesnesinin Hidden özelliğini kullanabilirsiniz. Örneğin:
Private Sub dtkariyer()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sayfa1") ' Çalışma sayfanızın adını buraya yazın
ws.Columns("A:F").Hidden = True ' A'dan F'ye kadar olan sütunları gizler
End Sub
Sütunları silmek için Columns nesnesinin VBA Columns Delete metodunu kullanabilirsiniz. Örneğin:
ws.Columns(“D:E”).Delete
VBA'da Metni Sütunlara dönüştürmek için bir aralıkta "TextToColumns" yöntemini kullanın. Bölmek istediğiniz aralığı belirtin ve "Hedef", "Veri Türü" ve "Virgül" veya "Sekme" gibi ayırıcı seçenekleri gibi uygun parametreleri ayarlayın.
Bu yöntem, seçilen aralığı seçilen ayırıcıya göre birden fazla sütuna böler.
VBA'da sütunlar arasında döngü oluşturmak için, çalışma sayfasının "Sütunlar" özelliğiyle "Her Biri İçin" döngüsünü kullanın ve istenen eylemleri gerçekleştirmek veya belirli özelliklere erişmek için her sütunda yineleme yapın.
