VBA Me.Filter'ı kullanmak için Çalışma Sayfalarını yazmanız gerekecektir.

Aşağıdaki alt programda gösterildiği gibi VBA Me.Range kullanılmıştır.

Alt programı çalıştırdıktan sonra Çalışma Sayfasına geri dönün.

Fark ettiğiniz gibi, ActiveCell “A10” hücresindedir. Benzer şekilde, bir hücredeki değerleri bildirmek için “Me” nesnesini kullanabilirsiniz.
ÖNEMLİ NOKTALAR
- “Me” VBA’da bir nesnenin veya modülün geçerli örneğini ifade eden bir anahtar sözcüktür.
- Özellikle UserForms ve sınıf modüllerinde kontrollerle etkileşimde bulunmak ve olayları yönetmek için oldukça kullanışlıdır.
- "Me", geçerli örneğin dinamik olarak referanslanmasına izin vererek kod esnekliğini, yeniden kullanılabilirliği ve okunabilirliği artırır.
- Sadece WorkSheets ve UserForms'da kullanılır. VBA Modüllerinde kullanılması derleme hatasına yol açacaktır.
- Nesne yönelimli programlamada bir sınıfın veya formun geçerli örneğiyle etkileşim kurmak için yaygın olarak kullanılır.
- UserForms'da "Me" kontrollerin özelliklerine ve yöntemlerine referans vermek için kullanılabilir, bu da kodu daha sezgisel hale getirir.
VBA ME'nin Kullanımları
VBA Me kullandığımızda, asıl fark kodun bildiriminde ortaya çıkar. Aşağıdaki örneğe bakın:

Burada, Sayfa adını, aralığı ve değeri tanımladınız. "Me" değişkeni kullanılıyorsa ve doğrudan sayfalara yazılıyorsa çok fazla bir şey yapmanıza gerek yoktur.

Benzer şekilde bu durumda da doğrudan sayfa modülüne yazarak, WorksheetName'i belirtmemize ve Excel'de aktif hücreleri seçmemize gerek kalmıyor.

Burada “A1” hücresine “Hoş Geldiniz” yazacaktır.
Alt rutinde, "Excel" çalışma sayfası adı kullanılarak yazdırılır. Sonuç aşağıda gösterildiği gibidir:

Excel VBA'da ME Nasıl Kullanılır?
VBA Me ile çalışmak için aşağıdaki adımları izleyin.
- Excel Çalışma Kitabında “Geliştirici”ye gidin ve “Visual Basic”i seçin.


VBA Modülünde, üzerinde çalışmak istediğiniz sayfayı seçin.
Artık Excel VBA'da kodlamaya başlayabilirsiniz.
- Verilen bir tabloda (bir dizi değer üzerinde, tablo yapmak için “Ctrl+T” tuşlarına basın), satır sayısını bulan bir alt rutin tanımlayın.

- Tabloyu başlatmak için bir ListObject değişkeni tanımlayın.

Ben nesnesi üzerinde çalıştığınız sayfayı ifade eder. - Nesne değişkeninin boş olmadığını kontrol edin, ardından ListRows.Count fonksiyonunu kullanarak tablodaki satır sayısını bulun.

- Bir Else fonksiyonu tanımlayın.

Kod:
Sub Find_Range()
Dim tbl As ListObject
Set tbl = Me.ListObjects(“Table1”)
If Not tbl Is Nothing Then
MsgBox “The table has ” & tbl.ListRows.Count & ” rows.”
Else
MsgBox “Table not found.”
End If
End Sub - “Çalıştır” butonuna veya “F5” tuşuna tıklayın.

Bu, satır sayısını içeren bir Mesaj Kutusu açacaktır.
“Me” nesnesinin nasıl kullanılacağını öğrendikten sonra, VBA Me.Controls'ün esas olarak bir UserForm'da kullanıldığı diğer yollara bakalım .
Örnekler
Excel VBA'da "Ben" nesnesinin farklı kullanım yollarına bakalım.
Örnek 1
VBA Me.Range'i etkili bir şekilde nasıl kullanacağınızı “ThisWorkBook” modülünde öğrenebilirsiniz. Üç sütun için ikili değerler tablosu verildiğinde, VBA Or kullanarak OR kapısı işlevini bulun ve zamandan tasarruf etmek için yol boyunca VBA Me işlevini kullanın.

VBA Font Rengi fonksiyonlarını kullanarak TRUE veya FALSE değerlerini sırasıyla yeşil ve kırmızı renk kodlu olarak yazdırın .
- Adım 1: Microsoft Excel Objects'te Object'i seçin. Burada, tüm Excel WorkBook'ta VBA Me'nin bir örneğini göreceksiniz.

Me nesnesini kullandığınızda, tüm modüle atıfta bulunur. Burada, "Me" nesnesi WorkBook'a bir bütün olarak atıfta bulunmak için kullanılır. Bu nedenle, "ThisWorkBook" nesnesini kullanmak yerine, onu Me Nesnesi ile değiştirebilirsiniz.
Örneğin, ThisWorkBook modülünde düzenleme yaparken ThisWorkBook.Sheets(“Sheet1”) yazmak yerine Me.Sheets(“Sheet1”) yazabilirsiniz.
- Adım 2: VBA Me.Range nesnesini kullanarak VEYA kapısı fonksiyonu için Sonucu Bulmak üzere bir alt rutin tanımlayın.

- Adım 3: Örneğin, şu anda aktif olan Excel Sayfasını yazdırın.

- Adım 4: Tablonun boyutunu bulun.

Burada, "Me" nesnesini kullanarak yukarıdaki tablonun bulunduğu sayfaya başvurulur. Bunu dinamik hale getirmek için herhangi bir satırı alın, sayın ve yalnızca son boş olmayan hücrenin sonunda xlUp işlevini kullanarak sonlandırın, bu işlev son boş olmayan hücreyi bulur ve sonra durur.
- Adım 5: “Tablo”nun boyutuna kadar çalışan bir For Döngüsü başlatın.

- Adım 6: VBA OR fonksiyonunu kullanarak sütunlardaki değerlerden herhangi birinin 1'e eşit olup olmadığını kontrol edin.

Eğer doğruysa, Yazı rengini yeşil yapın ve ilgili “D” sütununa “Doğru” yazdırın.
- Adım 7: Eğer koşulu(koşulları) başarısız olursa yürütülecek bir Else koşulu tanımlayın.

If-Else ifadelerini bildirdikten sonra If koşulunu sonlandırın .
- Adım 8: For döngüsünü sürdürün.

VBA Kodu :
Sub WorkBook_Examples()
Debug.Print Me.ActiveSheet.Name
Dim lastRow As Integer
lastRow = Me.Sheets(“Sheet3”).Range(“A” & Rows.Count).End(xlUp).Row
For i = 1 To lastRow
If Me.Sheets(“Sheet3”).Range(“A” & i).Value = 1 _
Or Me.Sheets(“Sheet3”).Range(“B” & i).Value = 1 _
Or Me.Sheets(“Sheet3”).Range(“C” & i).Value = 1 Then
Me.Sheets(“Sheet3”).Range(“D” & i).Font.ColorIndex = 4
Me.Sheets(“Sheet3”).Range(“D” & i).Value = True
Else
Me.Sheets(“Sheet3”).Range(“D” & i).Font.ColorIndex = 3
Me.Sheets(“Sheet3”).Range(“D” & i).Value = False
End If
Next i
End Sub
- Adım 9: “ThisWorkBook” modülünü çalıştırın. Mevcut etkin sayfa “Immediate” sekmesinde yazdırılacaktır.

Daha sonra yukarıda bahsi geçen tabloya bakalım.

Böylece VBA Me nesnesi olan VBA OR fonksiyonu yardımıyla OR kapısı başarılı bir şekilde uygulanmış oldu.
Örnek 2 – UserForm ile VBA ME
Bu örnekte UserForm'un arka plan rengini değiştirdiğiniz gibi Excel'deki sekmelerin rengini de rastgele değiştirebilirsiniz.
- Adım 1: Sekmenin rengini değiştirmek için bir alt rutin tanımlayın.

Bu alt rutin, argüman olarak bir Nesne veri türü alır.
- Adım 2: Bu programın üzerinde çalışacağı mevcut sayfayı tanımlayın.

- Adım 3: Çalışma kitabının WorkSheet rengini, RGB değerlerini elde etmek için 256 ile çarpmak üzere birlikte kullanılan VBA Rnd fonksiyonu ile değiştirin.

- Adım 4: “Ekle”yi seçin ve “Kullanıcı Formu”nu seçin.

Bu, hiçbir değişiklik yapılmayan yepyeni bir UserForm oluşturur.

- Adım 5: UserForm'a bir komut düğmesi ekleyin.


- Adım 6: Komut düğmesine çift tıklayarak, değişikliklerinizi yapabileceğiniz özel alt yordamına yönlendirin.

- Adım 7: Me.Filter fonksiyonunu kullanarak daha önce tanımlanan Altyordamı geçerli çalışma kitabına çağırın.

VBA KODU:
Sub SelectWorkSheet(FormName As Object)
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(ActiveSheet.Name)
ws.Tab.Color = RGB(Rnd * 256, Rnd * 256, Rnd * 256) Alt
End Sub
UserForm'da:
Public Sub Commandbutton1_Click()
SelectWorkSheet Me
End Sub
- Adım 8: UserForm'u çalıştırın ve aşağıdaki çıktıyı görüntüleyin.

Komut Butonuna tıkladıktan sonra sekme renkleri değişir.

Sheet1'e benzer şekilde ActiveSheet'i "Sheet2" olarak değiştirebilir ve Sekme rengini kendi isteğinize göre değiştirebilirsiniz.

Dikkat Edilmesi Gereken Önemli Noktalar
- "Me" Nesnesi, geçerli örneği referans alarak daha çok yönlü ve yeniden kullanılabilir kod yazmak için esneklik sunar. Kodu daha öz ve anlaşılması daha kolay hale getirerek kod okunabilirliğini artırır.
- Genellikle VBA'daki UserForm'larda ve sınıf modüllerinde kontrol ve olay yönetimi için kullanılır .
- "Me" ifadesini kullanırken, kastedilen nesneye veya forma atıfta bulunduğundan emin olmak için bağlama dikkat edin.
- "Me", özelliklerin ve yöntemlerin doğru örneğe uygulanmasını sağlayarak adlandırma çakışmalarının önlenmesine yardımcı olur ve istenmeyen yan etkilerin önlenmesini sağlar.
- "Me" kullanımı, kendi kendine referans veren kodu teşvik ederek onu daha bağımsız ve modüler hale getirir; özellikle daha büyük yazılım projelerinde değerlidir.
