Class Module

casteneda

Altın Üye
Katılım
17 Mayıs 2006
Mesajlar
85
Excel Vers. ve Dili
Excel 2003, Türkçe
Altın Üyelik Bitiş Tarihi
16-02-2026
Levent Beyin daha önce yayınladığı çalışmasındaki class module sistemini kendi projeme uyguladım. Fakat ne yaptımsa çalıştıramadım. Sürekli olarak Run Time Error 438 hatası veriyor. İşin ilginç tarafı, projemdeki herşeyi silip sadece Comboları bıraktım ancak yinede Class modül çalışmıyor. Dosyayı ekli olarak gönderiyorum. Boş bir excel sayfasında aynı şekilde oluşturunca çalışıyor. Bu hatanın sebebi nedir? Uğraşan tüm arkadaşlara, şimdiden çok teşekkürler.
 

casteneda

Altın Üye
Katılım
17 Mayıs 2006
Mesajlar
85
Excel Vers. ve Dili
Excel 2003, Türkçe
Altın Üyelik Bitiş Tarihi
16-02-2026
Aynısının çalışan dosyası ekte diğeri neden çalışmıyor. Kolay gelsin.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sayfanın üst kısmında bulunan siyah kalın çizgiyi silerek denermisiniz.

Yada çizgiyi silmeden kullandığınız kodu aşağıdaki şekilde değiştirip denermisiniz.

Kod:
Private Sub Workbook_Open()
    ReDim Preserve cmb(5)
    For a = 1 To 5
    Set cmb(a).cmb = ActiveSheet.Shapes("ComboBox" & a).OLEFormat.Object.Object
    Next
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
İlk eklediğiniz dosyanın neden çalışmadığınıda izah edelim.

Kod:
ActiveSheet.Shapes(a).OLEFormat.Object.Object
İlk dosyanızdaki yukarıdaki satır, comboboxların dışında en üstte bir çizgi nesnesi daha var dolayısıyla işleme bu nesneyide katıyor. Bu yazım şeklinde nesnenin tipi önemli değildir, yani bir çizim nesneside bir shape tir, bir comboboxta. Yukarıdaki gibi bir kullanım sayfada sadece tek tip nesne mevcutsa uygundur. Aksi takdirde eğer nesne isimleri ardışık gidiyorsa Sn COST_CONTROL'ün önerdiği yöntemi kullanabilirsiniz,

Kod:
ActiveSheet.Shapes("ComboBox" & a).OLEFormat.Object.Object
Yada isimler karışık ise aşağıdaki gibi nesnenin tipini kontrol ederekte işlem yapabilirsiniz.

Kod:
Private Sub Workbook_Open()
ReDim Preserve cmb(5)
For a = 1 To ActiveSheet.Shapes.Count
If ActiveSheet.Shapes(a).Type = msoOLEControlObject Then
If TypeName(ActiveSheet.Shapes(a).OLEFormat.Object.Object) = "ComboBox" Then
c = c + 1
Set cmb(c).cmb = ActiveSheet.Shapes(a).OLEFormat.Object.Object
End If
End If
Next
End Sub
 

casteneda

Altın Üye
Katılım
17 Mayıs 2006
Mesajlar
85
Excel Vers. ve Dili
Excel 2003, Türkçe
Altın Üyelik Bitiş Tarihi
16-02-2026
Sayın Cost Control ve Sayın Levent Bey öğretici cevabınız ve değerli açıklamalarınız için çok çok teşekkürler. İlginize ve emeğinize sağlık.
 
Üst