Bir sürü checkbox var...İşaretli olan verileri boş satıra alt alta almak için yardım?

Katılım
24 Ekim 2012
Mesajlar
71
Excel Vers. ve Dili
excel 2019 tr
Altın Üyelik Bitiş Tarihi
03-04-2021
Merhaba, elimde birsürü checkbox var...Okuluma sürekli malzeme geliyor bunları bilgisayarda kaydetmek istiyorum...checkbox işaretliyse yandaki textbox a miktar girilmemişse uyarı vermeli...Ya da 7-8 textbox seçilmişse ve miktarı girilmişse alt alta verileri boş satıra göre yazmalı...Her checkbox için ayrı ayrı yazıp end if le sonlandırmam mı gerekiyor?...Yoksa daha basit bir yöntemi var mı?
 
Son düzenleme:

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Merhaba,
Checkbox ile karşısında bulunan textbox arasında sayısal bir ilişki bulunmalı.
Örn yumurta için checkbox3 ise ve yumurta sayısı için textbox6 ise
aradaki 3 fark tümü için geçerli olmalı. Böylelikle kontrol bir döngüye bağlanıp hızlı, kolay, sağlıklı bir çözüm önerilebilir. Bu olmazsa gereksiz uzun uzun kod yazmak gerekir. Hem sunucu yorulur, hem kod yazan yorulur, hem kodu inceleyen yorulur.
Önerim doğrultusunda mantıksal bir yer değiştirme işlemini tamamlarsanız, yardım almanız daha kolay olur.
 
Katılım
24 Ekim 2012
Mesajlar
71
Excel Vers. ve Dili
excel 2019 tr
Altın Üyelik Bitiş Tarihi
03-04-2021
Öncelikle ilginize teşekkür ederim, checkbox ları üçlü dörtlü kopyaladığım için o şekilde oldu düzenleyip dediğiniz gibi paylaşayım birazdan
 
Katılım
24 Ekim 2012
Mesajlar
71
Excel Vers. ve Dili
excel 2019 tr
Altın Üyelik Bitiş Tarihi
03-04-2021
Dosyayı güncelledim, checkbox1 ile textbox5 alakalı...Hepsinin arasında 4 fark var...Yardımcı olabilir misiniz? Yoksa tek tek hepsine kod yazmak zorunda kalacağım.
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Userformunuzdaki YAZDIR butonuna aşağıdaki kodları atayıp, deneyiniz.
Kod:
Private Sub CommandButton3_Click()
Dim sh As Worksheet, ss As Long, i As Integer

Set sh = Sheets("ALINANLAR")
ss = sh.Range("A56789").End(3).Row + 1
With Me
sat = ss
s = 1
For i = 1 To 31
    If .Controls("CheckBox" & i).Value = True Then
        If .Controls("TextBox" & i + 4).Value <> "" Then
            sh.Range("A" & sat).Value = s
            sh.Range("B" & sat).Value = .Controls("CheckBox" & i).Caption
            sh.Range("C" & sat).Value = .Controls("TextBox" & i + 4).Value
            sh.Range("D" & sat).Value = Format(CDate(.TextBox1.Value), "dd/mm/yyyy")
            sh.Range("E" & sat).Value = .TextBox3.Text
            sh.Range("F" & sat).Value = .TextBox2.Text
            sat = sat + 1
            s = s + 1
        End If
    End If
Next i
End With
End Sub
 
Son düzenleme:
Katılım
24 Ekim 2012
Mesajlar
71
Excel Vers. ve Dili
excel 2019 tr
Altın Üyelik Bitiş Tarihi
03-04-2021
Üstad çaban için teşekkür ederim, mesela domates-salatalık vs seçtik diyelim aynı anda 5-6 farklı ürün seçilebilir...butona bastığımda sadece en alttaki işaretli veriyi alıyor...Diğerlerini kaydetmiyor.
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Size önerdiğim kodları güncelledim, tekrar deneyiniz.
 
Katılım
24 Ekim 2012
Mesajlar
71
Excel Vers. ve Dili
excel 2019 tr
Altın Üyelik Bitiş Tarihi
03-04-2021
Çok çok teşekkür ederim üstad, tam da istediğim gibi olmuş eline yüreğine sağlık...Sağolasın
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Rica ederim. İyi çalışmalar.
 
Katılım
24 Mayıs 2021
Mesajlar
6
Excel Vers. ve Dili
2019
Merhaba,
aAnı sıkıntıyı bende projemde yaşıyorum. Aşağıdaki kodları biraz açıklar mısınız?
Controls("TextBox" & i + 4).Value ---- ne demek




Userformunuzdaki YAZDIR butonuna aşağıdaki kodları atayıp, deneyiniz.
Kod:
Private Sub CommandButton3_Click()
Dim sh As Worksheet, ss As Long, i As Integer

Set sh = Sheets("ALINANLAR")
ss = sh.Range("A56789").End(3).Row + 1
With Me
sat = ss
s = 1
For i = 1 To 31
    If .Controls("CheckBox" & i).Value = True Then
        If .Controls("TextBox" & i + 4).Value <> "" Then
            sh.Range("A" & sat).Value = s
            sh.Range("B" & sat).Value = .Controls("CheckBox" & i).Caption
            sh.Range("C" & sat).Value = .Controls("TextBox" & i + 4).Value
            sh.Range("D" & sat).Value = Format(CDate(.TextBox1.Value), "dd/mm/yyyy")
            sh.Range("E" & sat).Value = .TextBox3.Text
            sh.Range("F" & sat).Value = .TextBox2.Text
            sat = sat + 1
            s = s + 1
        End If
    End If
Next i
End With
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Controls("TextBox" & i + 4).Value

Controls VBA'daki nesneler için kullanılan genel tanımlama. Textbox, combobox, listbox, commandbutton, radiobutton, frame vs.

"Textbox" & ifadesi adı Textbox ile başlayan demek oluyor

i+4 ise i değişkeninin o an aldığı değerin 4 fazlası demek oluyor. i'nin değeri o anda 1 ise i+4=5 sonucunu verir ve ifade de TextBox5 olur

Value = değer demektir

Sonuç olarak i'nin değeri o an 1 ise bu ifade Textbox5'in değeri anlamına gelir.
 
Katılım
24 Mayıs 2021
Mesajlar
6
Excel Vers. ve Dili
2019
Üstat teşekkür ederim. Mantığını anladım şimdi.
Bende 12 adet CheckBox var ve her checkbox'a bağlı 3 adet TextBox'ım var.
Tarih kısımlarını i değişkeni ile Textbox1 ---12 olarak bağladım.
Tek sorun diğer geriye kalan checkbox'a bağlı 2 adet TextBox'larım excel sayfasında ay satır farklı sütunlara kaydediyor olmam. Tabi ki kaydedemiyorum.

a=1 To 12
b=1 to 6

sh.Range("K" +b & sat).Value = .Controls("TextBox" & a).Value
b=b+2
olup, sütunu ilk olanı "K" Sütununa yaz, sonrasını "K" Sütunundan sonra "M"'ye yaz, sonrasını "O" sütununa yaz gibi bir formül varmı?

saygılarımla...







Controls("TextBox" & i + 4).Value

Controls VBA'daki nesneler için kullanılan genel tanımlama. Textbox, combobox, listbox, commandbutton, radiobutton, frame vs.

"Textbox" & ifadesi adı Textbox ile başlayan demek oluyor

i+4 ise i değişkeninin o an aldığı değerin 4 fazlası demek oluyor. i'nin değeri o anda 1 ise i+4=5 sonucunu verir ve ifade de TextBox5 olur

Value = değer demektir

Sonuç olarak i'nin değeri o an 1 ise bu ifade Textbox5'in değeri anlamına gelir.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu türden sorularda örnek dosya olmayınca konuyu anlamak da çözüm bulmak da zor oluyor, konu anlaşılsa ve çözüm önerilse de bu sefer soran kişi çözümü kendi dosyasına uygulayamıyor maalesef.

sh.Range("K" +b & sat).Value = .Controls("TextBox" & a).Value

Burdaki +b & sat ifadesinin fonksiyonunu anlamadım.

Farklı sütunları kullanmak için başka bir değişken kullanılabilir. K sütunu 11. sütun olduğundan

k = 11 diye önceden tanımlanır. Sonrada işlem arasında

Cells(b,k) = ..

satırından sonra

k = k+2 denilerek k değeri arttırılır ve döngüde sıradaki sütuna işlem yaptırılır.
 
Katılım
24 Mayıs 2021
Mesajlar
6
Excel Vers. ve Dili
2019
Merhaba;

Örnek dosyayı yükledim.
örnek dosyada ürün alınan firma bilgileri girildikten sonra o firmadan alınan 1 veya 1 den çok ürün kayıtlarının yapılması gerekiyor. Ancak ürünleri farklı hücrelere yazdırıyorum ve beynim artık durdu. Bir çözüm yolu bulamıyorum. Bu konuda yardımcı olabilir misiniz?


Bu türden sorularda örnek dosya olmayınca konuyu anlamak da çözüm bulmak da zor oluyor, konu anlaşılsa ve çözüm önerilse de bu sefer soran kişi çözümü kendi dosyasına uygulayamıyor maalesef.

sh.Range("K" +b & sat).Value = .Controls("TextBox" & a).Value

Burdaki +b & sat ifadesinin fonksiyonunu anlamadım.

Farklı sütunları kullanmak için başka bir değişken kullanılabilir. K sütunu 11. sütun olduğundan

k = 11 diye önceden tanımlanır. Sonrada işlem arasında

Cells(b,k) = ..

satırından sonra

k = k+2 denilerek k değeri arttırılır ve döngüde sıradaki sütuna işlem yaptırılır.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Günaydın. Dosyaya erişim izni vermemişsiniz.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Commandbutton kodları aşağıdaki gibi olunca kayıt yapılıyor ama kurguda bir sıkıntı var gibi. Çünkü aynı seri ve müşteri için her ürüne ayrı tarih açmışsınız, userformdadki tüm seçenekler doldurulunca dört satır kayıt oluşuyor. Normalde her kayıt işleminin bir satır olması gerekmez mi?

PHP:
Private Sub CommandButton1_Click()
Dim sh As Worksheet, ss As Long, i As Integer, s As Integer, a As Integer
Sheets("Alım Takip").Select
Set sh = Sheets("Alım Takip")
sat = sh.Range("A56789").End(3).Row + 1
With Me
    For i = 1 To 4
        If .Controls("CheckBox" & i).Value = True Then
            If .Controls("TextBox" & i).Value <> "" Then
                sh.Range("A" & sat).Value = .Controls("TextBox" & i).Value
                sh.Range("B" & sat).Value = txtserikod.Text
                sh.Range("C" & sat).Value = txtfirmaunvan.Text
                For s = 4 To 10 Step 2
                    If .Controls("tip" & i).Value <> "" Then
                        Sheets("Alım Takip").Cells(sat, s).Value = .Controls("tip" & i).Value
                    End If
                    If .Controls("agirlik" & i).Value <> "" Then
                        Sheets("Alım Takip").Cells(sat, s + 1).Value = .Controls("agirlik" & i).Value
                    End If
                Next s
                sat = sat + 1
            End If
        End If
    Next i
End With
End Sub
 
Katılım
24 Mayıs 2021
Mesajlar
6
Excel Vers. ve Dili
2019
Merhaba Yusuf Bey
seçilen checkbox ile aktif olan Textbox ları yazıyor ancak for döngüsünden kaynaklı tüm hücrelere yazmakta. Sanki for döngüsü kullanmadan yapmak gerekiyor gibi. Ben for döngüsünü iptal ettim. direk s değerini atadım. Bu sefer Elma seçersek sıkıntı yok ama diğer checkbox ları seçtiğimizde s değeri 2,3,4 aldığında bozuluyor.
Kod:
For i = 1 To 4
        If .Controls("CheckBox" & i).Value = True Then
           s = i + 3
                If .Controls("tip" & i).Value <> "" Then
                    Sheets("Alım Takip").Cells(sat, s).Value = .Controls("tip" & i).Value
                End If
                If .Controls("agirlik" & i).Value <> "" Then
                    Sheets("Alım Takip").Cells(sat, s + 1).Value = .Controls("agirlik" & i).Value
                End If
         End If
        End If
    Next i

Dosyanızda bazı değişiklikler yaptım, inceler misiniz?

 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Commandbutton1'in kodlarını aşağıdakilerle değiştirip deneyin:

PHP:
Private Sub CommandButton1_Click()
Dim sh As Worksheet, i As Integer, s As Integer
Sheets("Alım Takip").Select
Set sh = Sheets("Alım Takip")
sat = sh.Range("A56789").End(3).Row + 1
With Me
    sh.Range("A" & sat).Value = CDate(Label30.Caption)
    sh.Range("B" & sat).Value = txtserikod.Text
    sh.Range("C" & sat).Value = txtfirmaunvan.Text
    s = 4
    For i = 1 To 4
        If .Controls("CheckBox" & i).Value = True Then
            If .Controls("tip" & i).Value <> "" Then
                Sheets("Alım Takip").Cells(sat, s).Value = .Controls("tip" & i).Value
            End If
            If .Controls("agirlik" & i).Value <> "" Then
                Sheets("Alım Takip").Cells(sat, s + 1).Value = .Controls("agirlik" & i).Value
            End If
        End If
        s = s + 2
    Next i
End With
End Sub
 
Üst