• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Class Module hk.

Bir class nesne oluşturup yukarıdaki kodları oraya kopyalayın.
Her User formun kod kısmına aşağıdaki kodları kopyalayın.

Kod:
Private Sub UserForm_Activate()
    Dim x As New Class1
    x.Yukle ComboBox1
End Sub
 
Teşekkürler...

Merhaba,

Bu örnek biraz saçma oldu bunu da belirteyim çünkü gereksiz bir Class oldu.

Sanırım tek bir form için saçma buldunuz ama bir çok form var dosya da ve şimdi çok daha sade oldu.

Aslında bunun için Class nesneye ihtiyaç yok fonksyon ile çok daha basit yapılabilir...

Fonksiyondan kastınızı anlayamadım?
 
Normal bir modüle oluşturup aşağıdaki kodları yazarak ta çağırılabilir olduğu için Class kullanmak saçma oldu dedim.
Sizin istediğiniz şeyi yapmak için Class nesneye ihtiyaç yok.

Aşağıdaki kodları bir Module içerisine kopyalayın.

Kod:
Public Function Yukle(CBox As MSForms.Control)
    CBox.AddItem "Ocak"
    CBox.AddItem "Şubat"
    CBox.AddItem "Mart"
    CBox.AddItem "Nisan"
    CBox.AddItem "Mayıs"
End Function

Aşağıdaki kodları Userform un kod bölümüne kopyalayın.

Kod:
Private Sub UserForm_Initialize()
    Yukle ComboBox1
End Sub
Böylelikle kodlar daha kısa olmuş oldu.
 
Module1 deki kodları silin aşağıdakileri kopyalayın.

Kod:
Dim Buton1() As New Class1
Sub ClasCalistir(frm As UserForm)
    Dim sayi As Integer
    Dim ctl As Control
    sayi = 0
    For Each ctl In frm.Controls
        If TypeName(ctl) = "TextBox" Then
            sayi = sayi + 1
            ReDim Preserve Buton1(1 To sayi)
            Set Buton1(sayi).TB = ctl
        End If
    Next ctl
End Sub

Açmak istediğiniz formu aşağıdaki örnekteki gibi açın.

Kod:
Sub test()
    ClasCalistir ANKARA
    ANKARA.Show
End Sub


ClasCalistir ANKARA yı Userform / Initialize kısmına koysam olur mu?
 
Olur tabi. formun Initialize olayına kodları taşıyın.
eğer ClasCalistir ANKARA kısmı hata verirse ClasCalistir me şeklinde deneyin.
Denemekten çekinmeyin.
Her türlü deneme yapın.
Kodları F8 tuşuna basarak satır satır çalıştırıp, kodları anlamaya çalışın.
Dosyanızın bir kopyasını alıp üzerinde çalışmalar yapın.
Değiştirin, ekleyin, silin. Öğrenmek için çok faydalı olur.
 
Merhaba,

Bir userform' un içerisinden başka bir userform çağırıp kapatınca ilk userform' da class module devreden çıkıyor.
Bu durumu nasıl düzeltebiliriz, yardımcı olur musunuz?

Saygılarımla...
 

Ekli dosyalar

Merhaba,

Cevabınız için teşekkür ederim...

Aşağıda ki gibi 2. userform kapandığın da class modulu tekrar çağırsak da oluyor, denedim! :)
Peki yapı itibariyle teknik bir sorun yaşanır mı sizce?

Kod:
Sub test2()
    ClasCalistir ANKARA2
    ANKARA2.Show
    ClasCalistir ANKARA
End Sub
 
Eski kodlar en son çalıştırılan form için çalışacak şekilde ayarlanmış.
En son class da ise her form için uygulanabilir.

Siz tercihinizi ona göre yapın. Sorun olmaz.
 
Teşekkürler...
 
Geri
Üst