CheckBox ile Option buton ilişkisi ...

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba
Ekli Excel dosyasında; Personelin Bilgi ve becerelerini ölçmek için hazırlanmış bir Userform bulunmaktadır.

Burda her bir konu için 1' den 5' e kadar puanlandırmalar bulunmakta,

Burada Konular CheckBox, puanlamalar option buton ile gösterilmektedir.

Konu (CheckBox) seçildiği zaman ilgili option buton' lar aktif olsun, aksi durumda option butonalr pasif kalsın

CheckBox ve bağlantılı option buton' ları gruplamak için aynı Tag numarasını verdim

Özetle: Aşağıdaki kodu tüm checkbox' lara yazmak yerine bir class oluşturarak tek seferde işi nasıl çözebiliriz?

Kısaca: Bir checkbox işaretlendiği zaman aynı tag numarasına sahip option butonların aktif olması

desteğiniz için şimdiden teşekkürler,
iyi akşamlar.
Kod:
Private Sub chExcel_Change()
If Me.chExcel = True Then

    Opt11.Enabled = True: Opt12.Enabled = True
    Opt13.Enabled = True: Opt14.Enabled = True: Opt15.Enabled = True
Else
    Opt11.Enabled = False: Opt12.Enabled = False
    Opt13.Enabled = False: Opt14.Enabled = False: Opt15.Enabled = False

End If

End Sub
 

Ekli dosyalar

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyanızdaki "Programlama Dili" kısmına gerekli kodları yazdım. Ancak nesne isimlerini ardışık sıralı yapsanız kodlar çok daha kısa olabilirdi.

Not: Tag numarasını kullanmaya gerek yok. Ancak önerim tag yerine nesnelere ortak gropname adı verip bu adı da kullanabilirsiniz.

CLASSMODULE ÖRNEĞİ
 
Son düzenleme:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Dosyanızdaki "Programlama Dili" kısmına gerekli kodları yazdım. Ancak nesne isimlerini ardışık sıralı yapsanız kodlar çok daha kısa olabilirdi.

Not: Tag numarasını kullanmaya gerek yok. Ancak önerim tag yerine nesnelere ortak gropname adı verip bu adı da kullanabilirsiniz.

CLASSMODULE ÖRNEĞİ
Levent Hocam teşekkürler,
ortak gropname adı dediğiniz olayını örnekleştirebilir misiniz, Nasıl yapılıyor bu durum?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Resimdeki gibi ortak isim vereceğiniz nesneleri seçin ve properties penceresindeki "GroupName" özelliğine bir isim verin. Bu şekilde yaparsanız aynı groupname adına sahip butonlar kendi aralarında çalışır ve optionbutonları bir frame içine koymaya da gerek kalmaz.

245250
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Resimdeki gibi ortak isim vereceğiniz nesneleri seçin ve properties penceresindeki "GroupName" özelliğine bir isim verin. Bu şekilde yaparsanız aynı groupname adına sahip butonlar kendi aralarında çalışır ve optionbutonları bir frame içine koymaya da gerek kalmaz.

Ekli dosyayı görüntüle 245250
Teşekkürler Hocam;
Bu şekilde yaptım şimdi, yukarıdan aşağıya doğru 11, 12, 13...... şeklinde grup numaraları verdim.
bu durumda kod nasıl kısalabilir?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu şekilde kod kısaltılmaz. Ben tag yerine bu özelliği kullanın anlamında yazmıştım.

Kısaltma için örneğin checkboxlara, checkbox1, checkbox2, ...... vb. Option butonlarada checkbox1'e bağlı olanlar için opt10, opt11, opt12, ...... , checkbox2'ye bağlı olanlar için opt20, opt21, opt22, ...... şeklinde bir isimlendirme yapsaydınız controls komutunu kullanarak tek bir döngü ile çözüm mümkün olurdu.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Bu şekilde kod kısaltılmaz. Ben tag yerine bu özelliği kullanın anlamında yazmıştım.

Kısaltma için örneğin checkboxlara, checkbox1, checkbox2, ...... vb. Option butonlarada checkbox1'e bağlı olanlar için opt10, opt11, opt12, ...... , checkbox2'ye bağlı olanlar için opt20, opt21, opt22, ...... şeklinde bir isimlendirme yapsaydınız controls komutunu kullanarak tek bir döngü ile çözüm mümkün olurdu.
Merhaba Levent Hocam,

checkbox adlarını belirtmiş olduğunuz şekilde; chcBx1, chcBx2, chcBx3 şeklinde düzenledim
Aklıma yeni bir yöntem geldi,
Hangi option buton aktif edilirse, içinde bulunduğu checkbox numarasına veya kendi Tag numarasına göre; option buton değerinin bir dizi içine alıması

Örnek:
- chcBx1' in bulunduğu grupta 3 numara aktif edilirse; arr(1)=3
- chcBx5' in bulunduğu grupta 2 numara aktif edilirse; arr(5)=2
- chcBx12' in bulunduğu grupta 4 numara aktif edilirse; arr(12)=4

.....

sanırımsam bunun içinde bir class oluşturmak gerekecek
dizi içine aldıktan sonra bir sayfaya aktarmak çok kolay olacak

desteğiniz için tekrar-tarkrar teşekkürler,

Kod:
Dim Arr(1 To 32) As Variant
 

Ekli dosyalar

Son düzenleme:
Üst