6 seçenekli bir çalışmada 18 * 5 sorulu checkbox kodu nasıl kısaltılabilir.

yenilik025

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
233
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
23-06-2027
Merhabalar.
Bir konuda yardımınıza ihtiyacım var.
Yoksa bu kod bir hayli zaman alacağa benziyor.

Bir anket çalışmasında
6 seçenekli sorulardan 18 tane var.
18 * 5 = 90 tane ayrı kod yazılması gerekiyor.

Farklı bir soruyu bir grup kabul edip
bu yolla bu seçili checkbox değerlendirilerek diğerlerinin işareti kaldırılmak üzere
soru bazlı bu kod nasıl kısaltılabilir.

Örnek 2 seçenekli bir soru için yazılı kod.

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then TextBox2.Value = 1
CheckBox2.Value = False
End Sub


Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then TextBox2.Value = 2
CheckBox1.Value = False
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
Merhaba

İstediğiniz için 90 adet kod yazmaya gerek olmayabilir. Class modül ile çok daha az kod ile çözülür diye düşünüyorum. Ancak istediğiniz tam olarak anlayabilmek için bir kaç konuyu netleştirmek gerekli.

- Sorunuzda 18 soru demişsiniz dosyanızda 16 soru var.
- Her soruda sadece tek seçenek mi seçilebilir olmalıdır. Eğer öyleyse checkbox yerine optionbutton kullanmak daha kolay olur.
- Soruların görüntüsünü dosyanızdaki gibi resim olarakmı userforma ekleyeceksiniz? Eğer öyleyse tam olması gerektiği şekilde bir resmide eklermisiniz.
-Multipage neden kullandınız?
-Textboxların amacı nedir?
-Kaydet butonu ile yapılacak işlem nedir?

İstediğiniz tam olarak anlayabilirsem size farklı bir kod mantığı ile çözüm sunacağım.
 

yenilik025

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
233
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
23-06-2027
Hocam merhabalar.

Hocam merhabalar.

- Örnek olması açısından 16 soru eklemiştim.

Her soruda sadece tek seçenek mi seçilebilir?
- EVET anket soruları bir seçenek üzerine kurulu

- Soruların görüntüsünü dosyanızdaki gibi resim olarak mı userforma ekleyeceksiniz?
EVET

Eğer öyleyse tam olması gerektiği şekilde bir resmide ekler misiniz?
Hocam Soruların bende değeri yok spss öncesi 90 bilgiyi tek userformda alt alta eklemek daha kolay oalcak bu şekilde yatay veri girişi gerçekten çok kötü.

-Multipage neden kullandınız?
Anketin başlangıcında kişsel bilgiler var adı soyadı yer kaplamaması için Multipage 0 ı User formdan kaldırmıştım.

-Textboxların amacı nedir?
"Seçilen checkbox seçeneğine göre tanımladığım sayı değerini texbox ta aktarmak. "

-Kaydet butonu ile yapılacak işlem nedir?

*user formdaki bilgileri seçtiğim excel sayfasına yatay olarak hücre belirterek veri girişlerini alt alta sırayla ekleyeceğim

İstediğiniz tam olarak anlayabilirsem size farklı bir kod mantığı ile çözüm sunacağım.

ClasModul mantığını hiç bilmiyorum.
 

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
Merhaba

Formunuzu yeniden düzenledim. İlk aşamada userformdaki nesnelerin üzerine kodlarla nesne eklemeyi ve bu nesnelerin özelliklerini tanımlamayı bu dosyada görebilirsiniz. Bu aşamadan sonra nasıl ilerleneceği konusunda sizin yönlendirmenizi bekliyorum.

Kodların içinde bulunan iki döngünün üst sınırları olan 18 ve 6 sayıları parametrik yapılabilir. Böylece istediğiniz sayıda nesne ekleyebilirsiniz.

Userformun initialize olayına yazılan kodlar aşağıdaki gibidir.

Kod:
Private Sub UserForm_Initialize()
yuk = 25.5
sol = 94.5
For a = 1 To 18
For b = 1 To 6
ad = a & "soru" & b
MultiPage1.Pages(0).Controls.Add "Forms.optionbutton.1", ad
MultiPage1.Pages(0).Controls("" & ad).Top = yuk + c
MultiPage1.Pages(0).Controls("" & ad).Left = sol + d
MultiPage1.Pages(0).Controls("" & ad).Width = 12
MultiPage1.Pages(0).Controls("" & ad).Height = 12
MultiPage1.Pages(0).Controls("" & ad).BackStyle = 0
MultiPage1.Pages(0).Controls("" & ad).GroupName = a & "soru"
d = d + 20
Next
c = c + 17.2
d = 0
Next
End Sub
 

Ekli dosyalar

yenilik025

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
233
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
23-06-2027
UserForm açlışında nesne ekleme tamamlanmış.

Şimdi bu oluşturulan nesnelerdeki seçimi 1 2 3 4 5 6 olan seçenek değerini
KAYDET dediğimizde Sayfa 1 e kayıt edilmesi gerekiyor.
Ben bunu Excelweb.tr formundaki çalışmalardan çıkartabildiğim öğrendiğim bu kod aşağıda.

Ancak bu şekilde dinamik olarak nesne oluşturma ve bunları hafızada tutup excel sayfasına
kayıt kodunu da nasıl oluşturmalıyız.

Private Sub CommandButton1_Click()

Dim akayit

' If TextBox1.Text = Empty Then
' MsgBox "CİNSİYET Boş Bırakılamaz.", vbInformation, " EKSİK ANKET BİLGİSİ "
' MultiPage1.Value = 0
' Exit Sub
' End If


' For tbos = 4 To 13
' If IsNumeric(Controls("textbox" & tbos).Value) = Empty Then
' MsgBox " Cinsiyet, Yaş, Sınıf Cevaplarınızı Kontrol Ediniz ", vbOnly, " Bazı Bilgiler Boş bırakılmıştır. "


' End If
' Next
' Exit Sub

On Error Resume Next


Sheets("Sayfa1").Select
Application.ScreenUpdating = True

akayit = Sheets("Sayfa1").Range("A65536").End(3).Row + 1
Sheets("Sayfa1").Cells(akayit, "A") = akayit - 1
Sheets("Sayfa1").Cells(akayit, "B") = TextBox1.Text 'CİNSİYET
Sheets("Sayfa1").Cells(akayit, "C") = TextBox2.Text 'YAŞ
'=....Textbox18

ThisWorkbook.Save
'Unload Me
'UserForm1.Show
Application.ScreenUpdating = False
MsgBox (" Anket Kaydı Başarı İle Tamamlanmıştır "), vbOKOnly, "******Bilgilendirme Mesajıdır****** "
'MultiPage1.Value = 0
'TextBox2.Value = ""
'TextBox3.Value = ""

End Sub








Merhaba

Formunuzu yeniden düzenledim. İlk aşamada userformdaki nesnelerin üzerine kodlarla nesne eklemeyi ve bu nesnelerin özelliklerini tanımlamayı bu dosyada görebilirsiniz. Bu aşamadan sonra nasıl ilerleneceği konusunda sizin yönlendirmenizi bekliyorum.

Kodların içinde bulunan iki döngünün üst sınırları olan 18 ve 6 sayıları parametrik yapılabilir. Böylece istediğiniz sayıda nesne ekleyebilirsiniz.

Userformun initialize olayına yazılan kodlar aşağıdaki gibidir.

Kod:
Private Sub UserForm_Initialize()
yuk = 25.5
sol = 94.5
For a = 1 To 18
For b = 1 To 6
ad = a & "soru" & b
MultiPage1.Pages(0).Controls.Add "Forms.optionbutton.1", ad
MultiPage1.Pages(0).Controls("" & ad).Top = yuk + c
MultiPage1.Pages(0).Controls("" & ad).Left = sol + d
MultiPage1.Pages(0).Controls("" & ad).Width = 12
MultiPage1.Pages(0).Controls("" & ad).Height = 12
MultiPage1.Pages(0).Controls("" & ad).BackStyle = 0
MultiPage1.Pages(0).Controls("" & ad).GroupName = a & "soru"
d = d + 20
Next
c = c + 17.2
d = 0
Next
End Sub
 

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
Bir soru boş geçildiğinde uyarı vererek kaydetme iptal edilecekmidir?

Verilerin kaydedileceği "sayfa1"'i de dosyaya ekleyerek tekrar gönderirmisiniz.
 

yenilik025

Altın Üye
Katılım
28 Eylül 2005
Mesajlar
233
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
23-06-2027
Hocam her şey için emekleriniz için ilginiz bilginiz için teşekkür ederim.

Ancak hiç textbox um kalmadı bu şekilde
UserForma 3 tane de Textbox ekledim excel sayfasına bu bilgileri de kaydetmem gerekiyor
yardımcı olursanız da olmasanız da teşekkür ederim.

Dosyanızın son hali ektedir.
 

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
Rica ederim. Dosyanızın tamamlanmış hali ektedir.
 

Ekli dosyalar

Üst