• DİKKAT

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

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
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:
Combobox ların isimlerimi yoksa seçeneklerimi verilerden oluşacak.
 
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.
 
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
 
Son bir düzeltme daha
İsimleri değil caption ları değişecek.
Teşekkürler.
 
Çok teşekkürler oldu. :)
 
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:
ş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
 
İ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.
 
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
 
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.
 
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
attachment.php

ü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

  • Adsız.png
    Adsız.png
    5 KB · Görüntüleme: 21
Sayın systran,
Çok özel bir paylaşım olmuş, çok işime yaradı.

Çok teşekkürler.
İyi çalışmalar.
 
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.
 
Geri
Üst