• DİKKAT

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

Class Module

Katılım
17 Mayıs 2006
Mesajlar
85
Excel Vers. ve Dili
Excel 2003, Türkçe
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.
 
Aynısının çalışan dosyası ekte diğeri neden çalışmıyor. Kolay gelsin.
 
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
 
İ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
 
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.
 
Geri
Üst