çok sayıda textbox ile veri kaydı nasıl yapılır?

Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
selamlar;

hazırlamış olduğum bir userform ile veri girişi yapıyorum. ancak userform üzerinde çok fazla textbox ve combobox var. (77 adet textbox, 23 adet combobox) kaydet-sil-değiştir butonları koymak ve listbox olayını kullanmak istiyorum. ancak bu kadar çok textbox ve combobox için kod yazmak hem uzun ve zahmetli bir iş hemde dosya boyutunu arttıracak. döngü kullanarak bu işlemi yapamaz mıyız?

ben şöyle bir şey düşündüm ama hata verdi sayın üstadlarım;

Kod:
sub kaydet ()
...
..
..
 
set m1=sheets("veri2")
for t= 0 to 76
sonsat=[a65536].End(3).Row+1
s=columns(1)
 
m1.cells(sonsat, s+1)=controls("textbox" & t+1 )
s = s+1
 
next
end sub
bu döngüyü nasıl kurabiliriz? değerli fikirlerinizi bekliyorum...

saygılar...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Böyle bir döngü elbette kurulabilir, tek şartı textbox isimlerinin ardışık gitmesidir. Veya combobox ve textboxlar karşıkta olsa her iki nesneninde tag özelliğine yazılacak bir ardışık no ile de çözüme ulaşılabilir.
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Aynı sıkıntıyı ben de yaşamıştım ve bütün textbox ve comboboxlara textbox adını verdim ve ilgili hücrelere göre ardışık olarak sıraladım ve şu kodla işimi hallettim.


For a = 1 To 54
Controls("textbox" & a) = Cells(2, a).Value
Next


Yani sizin dediğin mantıkla, dediğiniz döngü kurulabilir..
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
Böyle bir döngü elbette kurulabilir, tek şartı textbox isimlerinin ardışık gitmesidir. Veya combobox ve textboxlar karşıkta olsa her iki nesneninde tag özelliğine yazılacak bir ardışık no ile de çözüme ulaşılabilir.
sn. leventm,

ilginize teşekkürler ancak söylediğinizi tam olarak anlayamadım. userform üzerinde multipage olayını kullandım. ve 5 adet sekme yaptım. textboxlar ve comboboxlar bu sekmelerin üzerinde karışık durumdalar. yani önce textbox sonra combobox şeklide değiller. ancak numaraları sıralı.

birde tag özelliğinin ne olduğunu bilmiyorum. bu işi nasıl çözüme götürebilirim?

yaşamıştım ve bütün textbox ve comboboxlara textbox adını verdim
sn. mesleki,

comboboxlara nasıl textbox adını verdiniz anlamadım?

saygılar...
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
forma combobox ekledikten sonra, sol menüden isim (name) bölümündeki combobox1'i silip yerine textbox1 yazdım sadece.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
konuyla ilgilenen değerli hocalarıma teşekkürler sunuyorum.

ancak iş hayatımın çok yoğun olması sebebiyle bu konuya tekrar geri dönemedim ve çalışmamı yarım bırakmak zorunda kaldım. ve nihayet fırsat bulup aynı konuya dönme şansım oldu.

değerli önerileriniz için teşekkürler üstadlarım, o sorun kısmen çözüldü sayılır. tek sorun veri kaydını alt alta yapmaması. yani sürekli 3. satıra kayıt yapıyor. aslında kod içerisinde (yanlış bilmiyorsam eğer)
Kod:
sonsat=[a65536].End(3).Row+1
tanımlaması ile bu sorun çözülmüş olması gerekiyordu ama maalesef çözülmüyor. birinci sorunum bu.:yardim:

ikinci sorum ise şu olacak. sayın levent hocamın veri yönetimi örneği vardı. hemen her çalışmamda kullandığım, ve her seferinde levent hocamın kulaklarını çınlattığım, hayır duası ettiğim örnek çalışması.. :mrgreen::mrgreen::mrgreen:

bu kayıt işleminde de oradakine benzer bir şeye ihtiyacım var. bu 77 adet textbox ve 23 adet combobox ile kişilere ait kayıtlar giriliyor. userform üzerinde multipage özelliğini kullandım ve 5 adet page üzerine bu textbox ve comboboxları yerleştirdim. bir tane de küçük bir listbox yerleştirdim. benim istediğim listbox üzerinde sadece kişilerin adı soyadı ve baba adı gözüksün (2 sütüna ait veriler yani) veri yönetimi örneğinde listboxta tüm sütunlar göründüğü için çift tıklandığnda veriler textboxlara geliyordu (değiştir ve sil işlemi için gerekiyor) ancak burada takdir edersiniz ki listboxa 77 sütun açma şansım bulunmuyor. bu işi nasıl çözebiliriz??

saygılar...

not: umarım sorumu net anlatabilmişimdir?? çalışmamın örneği işyerimde olduğu için örnek ekleyemedim, arzu ederseniz örnek userform ekleyebilirim. teşekkürler...
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
değerli üstadlarım;

userformun kaydet butonuna aşağıdaki kodları yazdım:

Kod:
Private Sub CommandButton1_click()
Set m1 = Sheets("veri2")
For a = 1 To 4
If Controls("TextBox" & a) = "" Then
MsgBox " veri girişi eksiktir"
Exit Sub
End If
Next
For t = 1 To 77
c = [a65536].End(3).Row + 1
m1.Cells(c, t) = Controls("TextBox" & t).Value
Next
End Sub
1den 77 e kadar olan textboxlardaki verileri yanyana kayıt ediyorum. ancak sürekli 3ncü satıra kayıt yapıyor. yani alt alta kayıt yapması gerekirken, her yeni kaydı alt satıra yazması gerekirken eski satırların üzerine kayıt yapıyor. bunu nasıl çözebilirim?

ayrıca 23 tane de combobox mevcut, onları bu kodun içine nasıl dahil edebilirm?? yardımlarınızı bekliyorum...

saygılar..

not: comboboxların isimlerini textbox olarak değiştirmeye çalıştım, vba buna izin vermedi.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
son soruma cevap verecek, yada değerli fikirlerini paylaşacak üstadım yok mu acaba??

:):):)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,577
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Konuyla ilgili örnek bir dosya eklerseniz daha faydalı olacaktır.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sn. Cost_Control üstadım,

dosyanın orjinalinde mesleki veriler olduğu için basit bir örneğini hazırladım ve ekte gönderiyorum. form üzerine 31 adet textbox ve 10 adet combobox koydum. (rastgele dizdim)

Kaydet butonunda yukarıda belirttiğim sorun ile karşılaştım. sil ve değiştir butonlarına ait kodlar elimde mevcut ancak onun için de listboxta çift tıklanan personele ait verilerin boxlara gelmesini sağlamam gerekiyor. bu konuda da yardımınıza ihtiyacım var. listboxta tüm sütunların görünmesine gerek yok, bu yüzden küçük bir listbox ekledim forma.

yardımlarınız için şimdiden teşekkürler...

saygılar...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,577
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ekte örnek dosyanız üzerinde gerekli düzenlemeleri yaptım. Belki eksik kısımları kalmış olabilir. Kontrol edin tesbit ederseniz geliştirebiliriz. Umarım faydası olur.

Ayrıca form üzerindeki tüm ComboBox' ların isimlerini TextBox olarak değiştirdim. Bu şekilde kayıt, değişiklik ve silme işlemleri daha pratik hale gelmiştir.
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
For t = 1 To 77
c = [a65536].End(3).Row + 1
m1.Cells(c, t) = Controls("TextBox" & t).Value



Yukarıdaki kodda c=[a65536]... kısmındaki [a65536] tanımlamasının hangi sayfaya ait olduğu konusunda emin olunuz. Başına m1 getirerek, yani;

c=m1.[a65536] ...

şeklinde bir düzenleme, dosyanızı göremediğim için emin değilim ama; belki işinizi görür.. İyi çalışmalar..
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sn. Cost_Control üstadım;

yine harikasınız.. :mrgreen::mrgreen:

çok güzel olmuş, tüm sorunların çözümü var dosya içerisinde. elleriniz dert görmesin teşekkürler.. kendi dosyama uyarladım ve harika oldu. sağolun...

sn. mesleki;

ilginize teşekkürler, söylediğinizi denedim ancak maalesef yine olmadı. her ne kadar sn. cost_control üstadım sorunu çözsede orada neyin hatalı olduğunu merak etmiyor değilim aslında??:roll::roll::roll: ben göremiyorum çünkü..
 
Üst