Sayfa üzerindeki ComboBoxların üzerine tıklandığında açılır kutu haline gelmesi

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
Herkese merhabalar, bir çalışma sayfası üzerinde 20 Adet ComboBox'um var. Combolar ile ilgili Kodlar ise;

Private Sub ComboBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ComboBox1.DropDown
End Sub

Private Sub ComboBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ComboBox2.DropDown
End Sub
.
.
.
.
"Private Sub ComboBox20_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ComboBox20.DropDown
End Sub"

Şeklinde 1 den 20'ye kadar devam ediyor. Bunu nasıl kısaltabiliriz. Bu sorudaki amacım buna benzer durumlarda Class Module nasıl kullanılır. bunu öğrenmek. Saygılarımla.
 

Korhan Ayhan

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

Ekteki örnek dosyayı incelermisiniz. Yalnız "MouseUp" olayında listeden seçim yaparken sıkıntı yarattığı için bu özelliği kullanmadım. TAB ve ENTER tuşları ile ComboBox larda dolaştığınızda liste otomatik olarak açılacaktır. Umarım faydası olur.

Kodlar Sn. leventm beyin hazırladığı örnek çalışmadan alınmıştır. Kendisine teşekkür ederim.
 
Son düzenleme:
Katılım
25 Nisan 2007
Mesajlar
459
Excel Vers. ve Dili
2007
Bende bir dosya hazırlamıştım. Emek harcadık madem ekleyelim :mrgreen:
Aslen güzel güzel açıklamıştım ama ufak bi aksilik dosya gitti. Ama fikir verir.
 

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
Mouseup olayı için Sn Cost_Control'un eklediği dosya içindeki class modül içine aşağıdaki kodu kopyalayın.

Not: İşlem görmesi için dosyayı kapatıp tekrar açmanız gerekir.

Kod:
Private Sub CB_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CB.DropDown
End Sub
.......Kodlar Sn. leventm beyin hazırladığı örnek çalışmadan alınmıştır. Kendisine teşekkür ederim.
Rica ederim, faydalı olduğuna sevindim.
 

Korhan Ayhan

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

Sn. leventm beyin eklemiş olduğu kod üstteki mesajımdaki dosyaya eklenmiştir.
 

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
Arkadaşlar ilginize ve emeğinize çok teşekkürler
 
Katılım
25 Nisan 2007
Mesajlar
459
Excel Vers. ve Dili
2007
Selamlar,
Kodlar Sn. leventm beyin hazırladığı örnek çalışmadan alınmıştır. Kendisine teşekkür ederim.
Sayın Leventm, bize de geçen hafta bir nasihatte bulunmuştu. Kardeşim class module kullan diye. Ben bir haftadır kısıtlı kaynaklardan class modül yapısını öğrenmeye çalıştım. Tam dedimki; eh bu bilgi ilk etapta işini görür. Forumda ilk okuduğum soru, bu class modül sorusuydu :mrgreen:

Class modül; sadece nesnelerimizi toplu yöntemler eklemeye yaramıyor. Kendi tanımladığımız nesneye yeni özellikler ekleyebilir, mevcut özellikleri çıkartabilir, yeni metodlar tanımlayabiliriz. Bu sayede yavaş yavaş kendi kütüphanemiz oluşacaktır. (Örneğin; Yukarıdaki örnek dosyadaki ekle metodu clasımıza yeni combolar eklemeye yarıyor)

Elimde "Profosyonel Excel Çözümleri" isimli mükemmel bir çeviri kitabı var. Seviyesi uzmanlar için olduğundan ancak kelime kelime okursam çok çok az anlayabiliyorum. 1 haftadır bu kitapla yatıp kalktım. Vaktim olduğu ilk zaman size oradaki class bölümünü aktarmaya çalışıcam. Gerçekten mükemmel bilgiler içeriyor.
 
Son düzenleme:
Katılım
25 Nisan 2007
Mesajlar
459
Excel Vers. ve Dili
2007
Kitap Adı : PROFESYONEL EXCEL ÇÖZÜMLERİ UZMANLAR İÇİN
Yazar : STEPHAN BULLEN, ROB BOVEY, JOHN GREEN
Çeviren A.BAKİ GÜÇLÜ
Yayınevi : ALFA BASIM YAYIN
Sayfa Sayısı : 726
Kitapyeri Fiyatı : 31.20 YTL

Kitap Açıklaması :
Kapsamlı Excel Çözümleri üreten geliştiriciler için vazgeçilmez bir başvuru kaynağı... Uygulama mimarilerinden kullanıcı formu ve çalışma sayfası tasarımına , hata yönetiminden performans optimizasyonuna tüm sorularınızın yanıtları bu kitapta! Yeni Excel işlevleri sunmak için eklentileri geliştirin. Excel’in güçlü veri çözümleme özelliklerini öğrenin. Komplike ve özgün grafikler oluşturun. Hata yönetimi , hata ayıklama ve performans optimizasyonu. Özel nesneler oluşturmak için sınıf modülleri ve arabirimler kullanın. Windows API çağrılarını doğru yerde ve şekilde kullanın. C tabanlı XLL ‘ler ile çalışma sayfası işlevleri ekleyin. Veritabanı programlamayı öğrenin. Excel içinden harici uygulamaları yönetin. Visual Basic 6 , VB.Net ve Visual Studio Tools for Office ile ile entegre olun. Veri alıp vermek ve Web Servisleriyle iletişim kurmak için XML kullanın. Yardım dosyaları , uygulama güvenliği , paketleme ve dağıtım. CD-ROM’da : ? Kitapta geliştirilen örneğin her aşamasına ait dosyalar ? Bölümlerde açıklanan kavramlara dair çok sayıda örnek. ? Excel geliştirme hizmet programları ve yardımcı dosyalar

http://www.kitapyeri.net/index.php?sayfa=2&id=21567&tur=1
http://www.ideefixe.com/kitap/tanim.asp?sid=IR3GJ278P0FN2ZJ1PP0T
 

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
Arkadaşlar tekrar herkese merhabalar Sn. Cost Controlun verdiği örnekte Tab tuşu ve Enter ile yapılan geçişlerde Formülde

"Private Sub CB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Ad = Replace(CB.Name, "ComboBox", "")

If KeyCode = 9 Or KeyCode = 13 Then
ActiveSheet.Shapes(Ad).OLEFormat.Object.Activate
'ActiveSheet.Shapes(Ad).OLEFormat.Object.Object.BackColor = vbRed
'ActiveSheet.Shapes(Ad).OLEFormat.Object.Object.ForeColor = vbWhite
ActiveSheet.Shapes(Ad).OLEFormat.Object.Object.DropDown

'ActiveSheet.Shapes(Ad - 1).OLEFormat.Object.Object.BackColor = vbWhite
'ActiveSheet.Shapes(Ad - 1).OLEFormat.Object.Object.ForeColor = vbBlack
End If
End Sub"
biçiminde yazdığımız zaman neden geçişler olmuyor neden"Ad = Replace(CB.Name, "ComboBox", "")" sonuna illede +1 eklemeliyiz ezbere olmaması açısından sormak istedim. Teşekkürler.
 
Katılım
25 Nisan 2007
Mesajlar
459
Excel Vers. ve Dili
2007
Neden"Ad = Replace(CB.Name, "ComboBox", "")" sonuna illede +1 eklemeliyiz ezbere olmaması açısından sormak istedim. Teşekkürler.
Yukarıdaki kodun algoritması şöyle,
Basılan tuşun kodu 9 (tab) veya 13 (enter) ise,
ilgili combobox'dan bir sonrakini aktif yap. ve listesini açılır duruma getir.

ilgili combobox'un birsonraki ise,
Ad = Replace(CB.Name, "ComboBox", "") +1

İlgili Comboboxun ismi Combobox2 ise, combobox yazısından replace ile kurtulursak 2 ise, ad=2+1 -> ad=3 dür. demekki ad değişkeni ilgili combobox'dan bir sonrakini ifade ediyor.
 

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
Sn. xxcell öğretici açıklamanız için çok teşekkürler. Kolay gelsin.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Selamlar,

Ekteki örnek dosyayı incelermisiniz. Yalnız "MouseUp" olayında listeden seçim yaparken sıkıntı yarattığı için bu özelliği kullanmadım. TAB ve ENTER tuşları ile ComboBox larda dolaştığınızda liste otomatik olarak açılacaktır. Umarım faydası olur.

Kodlar Sn. leventm beyin hazırladığı örnek çalışmadan alınmıştır. Kendisine teşekkür ederim.
Sevgili Cost_Control Hocam,
örneği indirdim de, combobox'un üzerine tıklayınca açılması yerine, bir üstteki satırdan ENTER tuşuile inerken combobox üzerine geldiğimizde açılması için bir kod yazabilir misiniz acaba. Forumda aradım ama bulamadım.
Saygılarımla...
 

Korhan Ayhan

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

Ekteki örnek dosyayı incelermisiniz.
 
Katılım
5 Nisan 2006
Mesajlar
449
Excel Vers. ve Dili
Office Excel 2003
TÜRKÇE
Sayın Cost_Control,
deneyerek sonuca ulaştım ve sonucu buraya yazıyorum.
Saygılarımla...

Private Sub ComboBox1_Enter()
ComboBox1.DropDown
End Sub
 
Üst