EXCEL VBA CLASS ÖZELLİĞİ

 

Excel VBA Sınıfı Nedir?

VBA sınıfları, Excel VBA'da nesne yönelimli programlamanın temel bir parçasıdır. Bir VBA sınıfı, belirli bir nesnenin özelliklerini, yöntemlerini ve olaylarını tanımlayan bir plan veya şablondur. Excel VBA'da bir sınıf, benzersiz özelliklere ve davranışlara sahip özel nesneler oluşturur.

Bir VBA sınıf modülü oluşturduğunuzda , sınıfın özelliklerini VBA Sınıf Özelliği, yöntemleri ve olayları ile tanımlarız, örneğin bir VBA Sınıf İşlevi veya VBA Sınıf oluşturucusu tanımlarız. Özellikler bir nesneyle ilişkili özellikleri veya verileri temsil eder, yöntemler nesnenin gerçekleştirebileceği eylemleri tanımlar ve olaylar nesne tarafından algılanabilen ve yanıtlanabilen eylemler veya oluşumlardır.


 Aşağıdaki örneği ele alalım:

Sınıf1 modülünde:

VBA Sınıf Giriş Modülü

Modül1'de:

VBA Sınıfı Giriş Modülü 1

Ayrıntıları Hemen sekmesinde yazdıracaktır.

VBA Sınıfı Giriş Modülü - Hemen

Excel VBA'da Özel Sınıf ve Nesneler Nasıl Oluşturulur?

VBA Sınıf Özelliğini uygulamak için aşağıda gösterildiği gibi şu adımları gerçekleştiriyoruz:

Adım 1: Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, VBA Editörü fonksiyonlar ve Alt prosedürler eklemek için açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.

Geliştirici - Visual Basic
Ekle - Modül

Adım 2: “Ekle” butonuna tıklayın ve “Sınıf Modülü”ne tıklayın. VBA Sınıf Özelliğini tanımlamak için yeni bir sınıf modülü oluşturulacaktır.

VBA Sınıfı - özel oluştur - Adım 2.jpg

Adım 3: Sınıf modülünde, Öğrenci Ayrıntılarını kabul eden bir sınıf oluşturmak için gerekli değişkenleri tanımlayın.

VBA Sınıfı - özel oluştur - Adım 3.jpg

Adım 4: Kullanıcıdan Öğrenci bilgilerini girmek için bir Genel alt rutin oluşturun.

VBA Sınıfı - özel oluştur - Adım 4.jpg

Adım 5: VBA InputBox fonksiyonunu kullanarak kullanıcıdan tüm ayrıntıları alın .

VBA Sınıfı - özel oluştur - Adım 5.jpg

Adım 6: Kullanıcı tarafından girilen öğrenci ayrıntılarını yazdırmak için başka bir Genel alt rutin başlatın.

VBA Sınıfı - özel oluştur - Adım 6.jpg

Adım 7: MsgBox fonksiyonunu kullanarak tüm öğrenci bilgilerini yazdırın.

VBA Sınıfı - özel oluştur - Adım 7

VBA'da tek bir MsgBox'taki tüm detayları yazdırmak için, bir sonraki satıra devam ifadesi olarak "& _" ile eşleştirilmiş vbCrLf fonksiyonunu kullanırız. Bu şekilde, tek bir MsgBox fonksiyonunu kullanarak birden fazla satır yazdırabiliriz .

Adım 8: Sınıfı çağırmak için modüle gidin.

VBA Sınıfı - özel oluştur - Adım 8

Adım 9: Öğrenci Ayrıntısı'nı uygulamak için VBA Sınıfını “Class2” olarak çağıracak bir alt prosedür oluşturun.

VBA Sınıfı - özel oluştur - Adım 9

Adım 10: Sınıfı çağırmak için kullanılacak yeni bir nesne oluşturun.

VBA Sınıfı - özel oluşturma - Adım 10

Adım 11: Yeni tanımlanan nesneyi kullanarak Sınıf fonksiyonlarını çağırın.

VBA Sınıfı - özel oluştur - Adım 11

In the Class Module:

Public Sname As String
Public marks As Double
Public rno As Integer
Public Subject As String

Public Sub GetDetails()
Sname = InputBox(“Enter Name: “)
marks = InputBox(“Enter marks: “)
rno = InputBox(“Enter Roll No.: “)
Subject = InputBox(“Enter Subject: “)
End Sub

Public Sub PrintDetail()
MsgBox “Name: ” & Sname & vbCrLf & _
“Marks: ” & marks & vbCrLf & _
“Roll No.: ” & rno & vbCrLf & _
“Subject: ” & Subject
End Sub

In the Normal Module:

Sub CreateStudentDetail()
Dim myStud As New Class2
myStud.GetDetails
myStud.PrintDetail
End Sub

Step 12: Print the Subroutine. The details will be displayed in a MsgBox.

VBA Class - create custom - Name
VBA Class - create custom - Marks
VBA Class - create custom - Roll No
VBA Class - create custom - Subject
VBA Class - create custom - Output

Örnekler

Excel VBA'da VBA Sınıfı modülünün uygulanmasına ilişkin birkaç örneğe bakalım.

Örnek #1

Hesap numarasını bildirip para yatırma veya çekme gibi işlemleri gerçekleştirdiğimiz bir Bankacılık sistemini uygulamamız gerektiğini varsayalım.

Adım 1: “Ekle” düğmesine tıklayın ve “Sınıf Modülü”ne tıklayın. VBA Sınıf Özelliğini tanımlamamız için yeni bir sınıf modülü oluşturulacaktır.

VBA Sınıfı - özel oluştur - Adım 2.jpg

Adım 2: Sınıf modülünde, bir hesaptaki Hesap numarasını ve bakiyeyi kabul eden iki Özel değişken tanımlayın.

VBA Sınıfı - Örnek 1 - Adım 2

Adım 3: Verilen hesap numarasını kabul edecek genel bir alt rutin tanımlayın.

VBA Sınıfı - Örnek 1 - Adım 3

Adım 4: Hesap numarası değerini döndürmek için bunu bir string olarak kabul ediyoruz.

VBA Sınıfı - Örnek 1 - Adım 4

Adım 5: Hesapta bulunan bakiyeyi döndürmek için bunu yapacak bir alt rutin tanımlıyoruz.

VBA Sınıfı - Örnek 1 - Adım 5

Adım 6: Bir miktar para yatırmak ve mevcut bakiyemizi artırmak için bir alt rutin başlatıyoruz.

VBA Sınıfı - Örnek 1 - Adım 6

Adım 7: Geri çekilmek ve ifadede yansıtmak için bu görevi gerçekleştirecek başka bir alt rutin oluşturuyoruz.

VBA Sınıfı - Örnek 1 - Adım 7

Burada işlemin onaylanması için belirli bir koşulun karşılanması gerekir. Yani çekilecek tutar mevcut bakiyeyi aşmamalıdır, aksi takdirde işlem gerçekleştirilmeyecektir.

Adım 8: Sınıfı çağırmak için modüle gidin.

VBA Sınıfı - Örnek 1 - Adım 8

Adım 9: Sınıfı çağırmak için modülde bir alt rutin başlatın.

VBA Sınıfı - Örnek 1 - Adım 9

Adım 10: Sınıfı çağıracak bir nesne tanımlayın.

VBA Sınıfı - Örnek 1 - Adım 10

Adım 11: Sınıf fonksiyonlarını çağırın ve kalan bakiyeyi yazdırın.

VBA Sınıfı - Örnek 1 - Adım 11

Bu, Hemen sekmesinde 300 yazdıracaktır.

In the Class module:

Private accountNumber As String
Private balance As Double

Public Sub SetAccountNumber(ByVal accNum As String)
accountNumber = accNum
End Sub

Public Function GetAccountNumber() As String
GetAccountNumber = accountNumber
End Function

Public Function GetBalance() As Double
GetBalance = balance
End Function

Public Sub Deposit(ByVal amount As Double)
balance = balance + amount
End Sub

Public Sub Withdraw(ByVal amount As Double)
If amount <= balance Then
balance = balance – amount
Else
MsgBox “Insufficient funds!”
End If
End Sub

In the main module:

Sub TestBankAccount()
Dim myAccount As New Class3
myAccount.SetAccountNumber “123456789”
myAccount.Deposit 500
myAccount.Withdraw 200
Debug.Print “Account Number: ” & myAccount.GetAccountNumber
Debug.Print “Balance: ” & myAccount.GetBalance
End Sub


Adım 12: Yukarıdaki kodu çalıştırın. Çıktı aşağıda gösterilmiştir:

VBA Sınıfı - Örnek 1 - Çıktı

Örnek #2

Kullanıcıdan gelen argümanlar olarak dikdörtgenin uzunluğu ve yüksekliği verildiğinde Çevresini ve Alanını bulabileceğiniz ve yazdırabileceğiniz bir Sınıf dikdörtgeni tanımladığınız bir örneği ele alalım.

Adım 1: “Ekle” ve “Sınıf Modülü”ne tıklayın. VBA Sınıf Özelliğini tanımlamak için yeni bir sınıf modülü oluşturulacaktır.

VBA Sınıfı - özel oluştur - Adım 2.jpg

Adım 2: Dikdörtgenin Genişliğini ve Yüksekliğini özel değişkenler olarak bildirin.

VBA Sınıfı - Örnek 2 - Adım 2

Adım 3: Bir dikdörtgenin genişliğini kabul edecek bir alt rutin tanımlayın.

VBA Sınıfı - Örnek 2 - Adım 3

Verilen boyutların pozitif olup olmadığını kontrol etmek için bir If-Else ifadesi başlatılır. Değilse, bir Hata mesajı yazdırır.

Adım 4: Benzer şekilde dikdörtgenin yüksekliğini kabul eden bir Alt Rutin tanımlanır.

VBA Sınıfı - Örnek 2 - Adım 4

Şekillerin pozitif değerlere sahip olması gerekir ki hesaplamalar doğru bir şekilde yapılabilsin. Bir dikdörtgenin boyutlarının negatif olması mümkün değildir!

Adım 5: Dikdörtgenin alanını döndüren bir fonksiyon bildirin. Dikdörtgenin alanı genişlik ve yükseklik değerleri çarpılarak hesaplanır.

VBA Sınıfı - Örnek 2 - Adım 5

Adım 6: Benzer şekilde, dikdörtgenin çevresini hesaplayan bir fonksiyon oluşturun. Çevre, genişlik ve yükseklik değerlerinin toplamının iki katına çıkarılmasıyla hesaplanır.

VBA Sınıfı - Örnek 2 - Adım 6

Adım 7: Sınıfı çağırmak için modüle gidin.

VBA Sınıfı - Örnek 2 - Adım 7

Adım 8: Sınıfı çağıracak bir alt rutin oluşturun.

VBA Sınıfı - Örnek 2 - Adım 8

Adım 9: Sınıf modülünü çağıracak bir nesne tanımlayın.

VBA Sınıfı - Örnek 2 - Adım 9

Adım 10: Fonksiyonları kullanarak dikdörtgenin genişlik ve yükseklik değerlerini bildirin.

VBA Sınıfı - Örnek 2 - Adım 10

Adım 11: Fonksiyonları çağırarak dikdörtgenin Alanını ve Çevresini yazdırın.

VBA Sınıfı - Örnek 2 - Adım 11

Kod:

In the Class Module:

Private width As Double
Private height As Double

Public Sub SetWidth(ByVal w As Double)
If w > 0 Then
width = w
Else
MsgBox “Width must be greater than zero!”
End If
End Sub

Public Sub SetHeight(ByVal h As Double)
If h > 0 Then
height = h
Else
MsgBox “Height must be greater than zero!”
End If
End Sub

Public Function GetArea() As Double
GetArea = width * height
End Function

Public Function GetPerimeter() As Double
GetPerimeter = 2 * (width + height)
End Function

In the main module:

Sub TestRectangle()
Dim myRectangle As New Class4
myRectangle.SetWidth 5
myRectangle.SetHeight 3
Debug.Print “Area: ” & myRectangle.GetArea
Debug.Print “Perimeter: ” & myRectangle.GetPerimeter
End Sub

Adım 12: Yukarıdaki kodu yazdırın. Çıktı Immediate sekmesinde yazdırılır.

VBA Sınıfı - Örnek 2 - Adım 12


VBA'da Sınıfların Artıları ve Eksileri

ArtılarıEksileri
Kapsülleme: İlgili verilerin ve davranışların tek bir varlık içerisinde düzenlenmesine olanak tanır.Öğrenme Eğrisi: Nesne yönelimli programlamaya aşina olmayanlar için sınıf modüllerini anlamak ve etkili bir şekilde kullanmak bir öğrenme eğrisi gerektirebilir.
Yeniden Kullanılabilirlik: Tek bir sınıf tanımına dayalı birden fazla örnek oluşturarak kodun yeniden kullanılabilirliğini sağlar.Ek Yük: Sınıf modüllerinin tanıtılması, basit prosedürel koda kıyasla bellek ve performans açısından ek yük getirebilir.
Modülerlik: Kodu ayrı bileşenlere ayırarak modüler programlamayı destekler.Sınırlı Kapsam: Sınıf modülleri tanımlandıkları VBA projesiyle sınırlıdır, bu da projeler veya uygulamalar arasında paylaşımı zorlaştırır.
Nesne Yönelimli Programlama (OOP): VBA Sınıf Mirası, VBA Sınıf Polimorfizmi ve VBA Sınıf kapsüllemesi gibi OOP prensiplerinin uygulanmasına olanak tanır.Projenin Karmaşıklığı: Proje daha karmaşık hale geldikçe, birden fazla sınıf arasındaki etkileşimleri yönetmek zorlaşabilir.
Veri Bütünlüğü: Verilerin nasıl değiştirilebileceğini ve erişilebileceğini kontrol ederek veri bütünlüğünün sağlanmasını güvence altına alır.Hata Ayıklama: Sınıf modüllerini içeren hata ayıklama kodu, prosedürel koddan daha karmaşık olabilir ve sorun tanımlama ve çözümü için ek çaba gerektirebilir.

Dikkat Edilmesi Gereken Önemli Noktalar

  • Sınıflar oluşturmadan önce, sınıf yapınızı planlamak ve tasarlamak için zaman ayırın. Nesneleriniz için ihtiyaç duyduğunuz özellikleri, yöntemleri ve ilişkileri belirleyin.
  • Sınıflarınız, özelliklerinizin ve metotlarınızın adlandırma kurallarını tutarlı ve açıklayıcı bir şekilde izleyin.
  • Sınıf üyelerinizin (özellikler ve yöntemler) görünürlüğünü ve erişilebilirliğini kontrol etmek için erişim tanımlayıcılarını (Genel, Özel, vb.) kullanın. Veri bütünlüğünü korumak ve dahili uygulama ayrıntılarına erişimi kontrol etmek için verileri uygun şekilde kapsülleyin.
  • Sınıf modülleriniz içinde aşırı global değişkenler kullanmaktan kaçının. VBA'da global değişkenleri aşırı kullanmak , kodun bakımı ve hata ayıklamasında zorluğa yol açabilir. Bunun yerine, sınıf içinde verileri yönetmek ve geçirmek için özellikler ve yöntem parametrelerini çalıştırın.
  • Sınıf alanlarını (değişkenleri) herkese açık olarak ifşa etmekten kaçının. Bunun yerine, verileri kapsüllemek ve kontrollü erişim sağlamak için özellikleri kullanın.





Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...