Checkbox isimlerini dinamik yapmak

Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Merhabalar.
Yaptığım çalışmada D3 : D111 aralığında veriler var. Aynı sayıda CheckBox lardan oluşan bir de UserForm um var. CheckBox lar isimlerini D sütunundaki verilerden alsın istiyorum. Aşağıdaki kodları yazıyorum fakat hata alıyorum. Örnek bir dosya koydum.
Herkese iyi çalışmalar.

Kod:
 Private Sub CommandButton1_Click()
    UserForm1.Show
     For i = 1 To 120
      UserForm1.Controls("CheckBox" & i).Name = Worksheets("veriler").Cells(i + 2, 4).Value
     Next i
End Sub
 

Ekli dosyalar

Son düzenleme:

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Combobox ların isimlerimi yoksa seçeneklerimi verilerden oluşacak.
 
Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Combobox değil özür dilerim, ilk mesajda düzelttim. Checkbox isimleri verilerden oluşacak. Bunu çözdükten sonra da karşısındaki değerleri, checkbox ın değeri True olduğunda bir satıra yazdırmam gerekiyor.
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Kodu Aşağıdaki gibi değiştirir iseniz istediğiniz olacak.

For i = 1 To 120
Controls("CheckBox" & i).Caption = Worksheets("veriler").Cells(i + 2, 6)
Next i
UserForm2.Show
 
Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Son bir düzeltme daha
İsimleri değil caption ları değişecek.
Teşekkürler.
 
Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Çok teşekkürler oldu. :)
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Kolay gelsin.
 
Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Bir konu daha var. Ben değeri True olan checkboxları hücreye yazdırmak istiyorum. (Checkboxa karşı gelen sayısal değeri). Bunun için aşağıdaki gibi bir kod yazdım, fakat nereye koyacağımı bilemedim. Userform_initialize() in altına yazdığımda hata alıyorum. Checkbox_click gibi bir komutu da yazdıramadım.

Kod:
    Dim sonsatir, t As Long
     sonsatir = Range("A65500").End(3).Row + 1
      If Controls("CheckBox" & t).Value = True Then
       Sheets("fiyat").Cells(sonsatir, "t+5").Value = Sheets("veriler").Cells(t + 2, "G").Value
       Else: Sheets("fiyat").Cells(sonsatir, "t+5").ClearContents
      End If
 
Son düzenleme:

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,573
Excel Vers. ve Dili
2007 [TR], 2013 [TR]
şu şekilde döngü kurmayı deneyin. Checkboxların isimleri CheckBox1, CheckBox2, CheckBox3, ... ... ... , CheckBox120 olarak devam ediyor olmalı.
Kod:
for t=1 to 120
  If Controls("CheckBox" & t).Value = True Then
       Sheets("fiyat").Cells(sonsatir, "t+5").Value = Sheets("veriler").Cells(t + 2, "G").Value
  Else
       Sheets("fiyat").Cells(sonsatir, "t+5").ClearContents
  End If
Next t
 
Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
İsimler o şekilde devam ediyor onda sıkıntı yok fakat ben dediğim gibi nereye yazacağım onu çözemedim. Userform un üstünde checkboxlar var. Üst tanımda Private Sub dan sonra ne yazmalıyım ki checkboxları her True yaptığımda hücreye değer yazsın, her false yaptığımda da silsin.
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Kod:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
   MsgBox "seçim yapıldı"
Else
   MsgBox "seçim kaldırıldı"
End If

End Sub
 
Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Sayın programer bunu 120 tane checkbox için tek tek yapmaktan daha kısa bir yol var mıdır bunun için döngü kurmaya çalışıyorum.
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
604
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Sayın cagri24 bu dediğinizi yapmak için Class Module kullanmak gerekiyor. Benimde bu alanda pek bilgim yok. Forumda http://www.excel.web.tr/f144/ alanını incelemenizi öneririm.
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,573
Excel Vers. ve Dili
2007 [TR], 2013 [TR]
aşağıdaki üret kodunu yeni boş bir excel sayfasında çalıştırın. size 1 den 120 ye kadar CheckBox1_Click() CheckBox2_Click() olayı için gerekli kodları sayfa1 de üretecek.
Kod:
Sub ÜRET()
satir = 1
For i = 1 To 120
    Sayfa1.Range("A" & satir) = "Sub CheckBox" & i & "_Click()"
    satir = satir + 1
    Sayfa1.Range("A" & satir) = "Call kontrol_et(" & i & ")"
    satir = satir + 1
    Sayfa1.Range("A" & satir) = "End Sub"
    satir = satir + 1
Next i
End Sub

üretilen bu kodları belgenizde userformun kod bölüne yapıştırın. (daha önceden kendi yazdığınız checkbox_click() kodları varsa silin hata verir.

aşağıdaki kontrol_et() kodunu da userform içine yapıştırıp, formu f5 ile çalıştırın ve seçilen textbox ile ilgili istenilen bilgi üretiliyor mu kontrol edin.

Kod:
Sub kontrol_et(ByVal a As Integer)
    MsgBox "CheckBox" & a & " =" & Controls("CheckBox" & a).Value
End Sub
 

Ekli dosyalar

Katılım
12 Ağustos 2013
Mesajlar
65
Excel Vers. ve Dili
Excel 2016 Türkçe, Excel 2010 Türkçe
Altın Üyelik Bitiş Tarihi
16/07/2020
Sayın systran,
Çok özel bir paylaşım olmuş, çok işime yaradı.

Çok teşekkürler.
İyi çalışmalar.
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Kodu Aşağıdaki gibi değiştirir iseniz istediğiniz olacak.

For i = 1 To 120
Controls("CheckBox" & i).Caption = Worksheets("veriler").Cells(i + 2, 6)
Next i
UserForm2.Show

Bu kodu kullanarak checkboxlara isimleri aldırdım ve sabit kalmasını istiyorum. Nasıl bir revize yapmalıyım kodda acaba. Hortlattığım için kusura bakmayın.
 
Üst