• DİKKAT

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

Userform, textbox ile boş satıra kaydetme

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,490
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Arkadaşlar, örnek dosyada KAYDET butonu boş tabi ki.
Normalde yapabiliyorum ama. Ardışık olunca yapamadım.
TextBox1 Sayfa1 A sütunu için
TextBox2 Sayfa1 B sütunu için
TextBox3 Sayfa1 C sütunu için
(ben bunu artıracağım, mesela D sütunu boş, M'ye kadar gidiyor)

Boş olan ilk satıra, yazacak KAYDET deyince kaydetmiş olacak.

Şimdiden çok ama çok teşekkür ederim.
 

Ekli dosyalar

Sayın hocalarımız. Bir yardımcı olabilir misiniz. Yapmayı denedim, yapamadım.
 
C#:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Say + 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub
 
C#:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Say + 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub

Hocam, öncelikle teşekkür ederim. Sıralama olayını anlamadım. Şimdi şöyle, kayıt yapılacak sütunlar A - B - C - D -F - I - P - Q - R -S - T - U
yani aralarda boşluklar var. Nasıl yapacağım.
 
Şöyle yaparım ben olsam.
A sütunu için olan TextBoxa tb_01, B için tb_02, K için tb_11 gibi isimler veririm.
Kod:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Right(Kontrol.Name, 2) * 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub
 
Şöyle yaparım ben olsam.
A sütunu için olan TextBoxa tb_01, B için tb_02, K için tb_11 gibi isimler veririm.
Kod:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Right(Kontrol.Name, 2) * 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub

Peki hocam, aradaki E sütununu nasıl atlıyor. Size yazdığım sütunlar gerçekten dosyamdaki sütun sıralaması.
 
Şöyle yaparım ben olsam.
A sütunu için olan TextBoxa tb_01, B için tb_02, K için tb_11 gibi isimler veririm.
Kod:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Right(Kontrol.Name, 2) * 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub
Bir de hocam, TextBox 17'den başlıyor. ilk 16 dolu.
 
Dediğim gibi yapabilirsin
Sütunlarımız A-1 / B-2 / C-3 /....diye devam ediyor ya, siz de hangi textbox hangi sütuna kaydedilecekse TextBox özelliklerine girip adını değiştirin, o sütunun numarasını verin.
N sütununa kaydolacak textbox adının son 2 hanesi 14 olsun, TextBox14, TextBox_14, Tb_14 gibi. Kendinize göre uyarlayın.
Aynı şekilde E sütununa kaydeidlecek olan Textbox_05 olsun. gibi
 
Dediğim gibi yapabilirsin
Sütunlarımız A-1 / B-2 / C-3 /....diye devam ediyor ya, siz de hangi textbox hangi sütuna kaydedilecekse TextBox özelliklerine girip adını değiştirin, o sütunun numarasını verin.
N sütununa kaydolacak textbox adının son 2 hanesi 14 olsun, TextBox14, TextBox_14, Tb_14 gibi. Kendinize göre uyarlayın.
Aynı şekilde E sütununa kaydeidlecek olan Textbox_05 olsun. gibi

Doğru mu anladım hocam, mesela A B C E sütunları var, D sütununa kayıt yapılmayacak.
A sütunu için Tb_1
B sütunu için Tb_2
C sütunu için Tb_3
E sütunu için Tb_5

Olarak değiştireceğim. Kodu da kaydet butonuna yapıştıracağım.
 
Doğru ama
Sütun sayısı 2 basamaklı da olacağı için kod bu haliyle düzgün çalışsın diye
Tb_1 değil Tb_01
Tb_2 değil Tb_02 yap

İki basamaklı sütunlar için Tb_10, Tb_11 gibi olacak
 
Doğru ama
Sütun sayısı 2 basamaklı da olacağı için kod bu haliyle düzgün çalışsın diye
Tb_1 değil Tb_01
Tb_2 değil Tb_02 yap

İki basamaklı sütunlar için Tb_10, Tb_11 gibi olacak
Anladım hocam. Deneyip sonucu bildireceğim.
 
Alternatif olsun. İnceleyiniz.

Hocam, örnek dosya çok güzel ama iki sorum olacak. Kaydet butonuna bastıkça kayıt yapıyor. Kaydet dedikten sonra tabloyu boşaltması lazım. Bir de sütunlar önemli, mesela D sütununa kayıt gelmeyecek. Ama boş bir textbox da olsun istemiyorum.
 
Dediğim gibi yapabilirsin
Sütunlarımız A-1 / B-2 / C-3 /....diye devam ediyor ya, siz de hangi textbox hangi sütuna kaydedilecekse TextBox özelliklerine girip adını değiştirin, o sütunun numarasını verin.
N sütununa kaydolacak textbox adının son 2 hanesi 14 olsun, TextBox14, TextBox_14, Tb_14 gibi. Kendinize göre uyarlayın.
Aynı şekilde E sütununa kaydeidlecek olan Textbox_05 olsun. gibi
Hocam, kayıt yapmadı, zaten kaydet butonu ile ilgili bir şey yapmadım sanırım. Yoksa yazınca başka bir şey mi yapmam gerekiyordu.
 
Kodları Kaydet butonunu altına yaz ya d aoradan CALL ile çağır.
Mevcut güncel dosyanı gönder onun üzerine düzeltip yollayayım
 
Bu kodu bir satır ekledim.
C++:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    Range("A" & Son) = ComboBox1.Value
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Right(Kontrol.Name, 2) * 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub

Kaydet butonunuzun koduna da bir satır ilave ettim
C#:
Private Sub CommandButton6_Click()
TümTextBoxKaydet 'ilave ettim
ThisWorkbook.Save
Application.Quit
End Sub

224363

Formdaki tüm textboxların ismini bu şekilde değiştireceksin. Hepsini sütunlara kaydediyorsun diye dedim.
Eğer kaydetmediğin bir TextBox varsa söylemelisin.
 
Bu kodu bir satır ekledim.
C++:
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
    Son = Range("A1").End(xlDown).Row + 1
    Range("A" & Son) = ComboBox1.Value
    For Each Kontrol In Controls
        If TypeName(Kontrol) = "TextBox" Then
            Say = Right(Kontrol.Name, 2) * 1
            Cells(Son, Say) = Kontrol
        End If
    Next Kontrol
End Sub

Kaydet butonunuzun koduna da bir satır ilave ettim
C#:
Private Sub CommandButton6_Click()
TümTextBoxKaydet 'ilave ettim
ThisWorkbook.Save
Application.Quit
End Sub

Ekli dosyayı görüntüle 224363

Formdaki tüm textboxların ismini bu şekilde değiştireceksin. Hepsini sütunlara kaydediyorsun diye dedim.
Eğer kaydetmediğin bir TextBox varsa söylemelisin.
Sub TümTextBoxKaydet()
Dim Kontrol As Control
' Tek şart, TextBox ların sıralanması Sütun sıralamasıyla bir olsun
Son = Range("A1").End(xlDown).Row + 1
Range("A" & Son) = ComboBox1.Value
For Each Kontrol In Controls
If TypeName(Kontrol) = "TextBox" Then
Say = Right(Kontrol.Name, 2) * 1
Cells(Son, Say) = Kontrol
End If
Next Kontrol
End Sub
Hocam, bu şekilde hata veriyor. Adlarını sırasıyla değiştirdim TextBox_01 şeklinde
 
Geri
Üst