• DİKKAT

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

Şartlı kayıt

Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Değerli Üyeler,
Yapmak istediğim tanımlanan bir alana şartlı olarak veri kaydetmek. Örnek dosyamda ayrıntlarıyla açıklandı. Ancak özetle, yapmak istediğimi sadece 1.alan için ve 4 günlük tarih içerisinde yapabildim. Ancak, 4 gün yerine 30 gün almayı düşündüğümde ise kodların satırı çok fazla oluyor. Hele bir de alan 2., alan 3, alan 4 vb. tanımlarsam kodları yazmak ve uygulayabilmek mümkün görünmüyor.

Bu isteğimin excel ile ve kod yazılması ile mümkünü var mı? Yoksa bir program yazılmasını mı gerektiriyor? En azından bunu öğrenmek istiyorum.

Yardımlarınız için şimdiden teşekkürler!!!

Private Sub CommandButton1_Click()
Sheets("Sayfa1").Select
If CheckBox1.Value = True And ComboBox1.Value = 1 Then Range("b7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 2 Then Range("c7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 3 Then Range("d7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 4 Then Range("e7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 5 Then Range("f7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 6 Then Range("g7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 7 Then Range("h7").Value = ComboBox5.Value
If CheckBox1.Value = True And ComboBox1.Value = 8 Then Range("ı7").Value = ComboBox5.Value

If CheckBox2.Value = True And ComboBox2.Value = 1 Then Range("b8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 2 Then Range("c8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 3 Then Range("d8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 4 Then Range("e8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 5 Then Range("f8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 6 Then Range("g8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 7 Then Range("h8").Value = ComboBox5.Value
If CheckBox2.Value = True And ComboBox2.Value = 8 Then Range("ı8").Value = ComboBox5.Value


If CheckBox3.Value = True And ComboBox3.Value = 1 Then Range("b9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 2 Then Range("c9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 3 Then Range("d9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 4 Then Range("e9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 5 Then Range("f9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 6 Then Range("g9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 7 Then Range("h9").Value = ComboBox5.Value
If CheckBox3.Value = True And ComboBox3.Value = 8 Then Range("ı9").Value = ComboBox5.Value

If CheckBox4.Value = True And ComboBox4.Value = 1 Then Range("b10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 2 Then Range("c10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 3 Then Range("d10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 4 Then Range("e10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 5 Then Range("f10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 6 Then Range("g10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 7 Then Range("h10").Value = ComboBox5.Value
If CheckBox4.Value = True And ComboBox4.Value = 8 Then Range("ı10").Value = ComboBox5.Value

aciklama = "Kayıt işlemi tamamlandı."
dugme = vbOKOnly + vbInformation + vbDefaultButton1
baslik = "KAYIT"
MsgBox aciklama, dugme, baslik
Unload Me
UserForm1.Show
End Sub
 

Ekli dosyalar

excel ile ve kod yazılması ile mümkünü var mı?

Vardır.
Örneğin ComboBox1 den ComboBox4 e kadar olanlar için yazdığınız uzun kodlar yerine aşaığdakileri kullanabilirsiniz.

Kod:
For k = 1 To 4
For i = 1 To 8
   UserForm1.Controls("ComboBox" & k).AddItem (i)
Next
Next

Asıl sorunuzun yanıtı da buna benziyor. Hafta sonuna kadar yanıt bulunamazsa hafta sonu yazar gönderirim. (Yarın bütün günü hastanede geçireceğim.)
Saygılar.
 
Sayın dEdE,
Çok üzüldüm, umarım sağlıkla ilgili ciddi bir şey yoktur. Ben de siz müsait oluncaya kadar dosyamı düşünmeyeceğim ve ilgilenmeyeceğim. Belki birlikte sorunumu çözebiliriz.
Zor anınızda bile yardımınızı esirgemediniz.
Sağlıklar diliyorum. Umarım her şey gönlünüzce olur.
Her şey için teşekkürler!!!
 
Kontrolleri 30 adet çoğaltmayı müteakip if li kısımların hepsi yerine aşağıdaki kodları kullanabilirsiniz. Ayrıca diğer alanlar içinde bu kodları bir procedure olarak yazıp ana programdan her defasında çağırarak istediğiniz kadar alan çoğaltabilirsiniz.
Kod:
For x = 1 To 30
If Val(Controls(CheckBox & x)) And Val(Controls(ComboBox & x)) = 1 Then Range("b" & x + 6).Value = ComboBox5.Value
Next
 
Sayın Janveljan,
Öncelikle yardımlarınız için çok çok teşekkür ederim. Ancak, ıfli kısımların yerine sizin düzenlemiş olduğunuz kodları yerleştirdiğimde de aşağıdaki 1. satırın bölümünde error verdi. Acaba nerede yanlışlık yaptım. Bir de diğer alanlar için bu kodları bir procedure olarak yazıp ana programdan çağırmak nasıl olacak. Yardımınız olursa çok sevinirim.

If Val(Controls(CheckBox & x)) And Val(Controls(ComboBox & x)) = 1 Then



For x = 1 To 4
If Val(Controls(CheckBox & x)) And Val(Controls(ComboBox & x)) = 1 Then Range("b" & x + 6).Value = ComboBox5.Value
If Val(Controls(CheckBox & x)) And Val(Controls(ComboBox & x)) = 2 Then Range("b" & x + 6).Value = ComboBox5.Value
If Val(Controls(CheckBox & x)) And Val(Controls(ComboBox & x)) = 3 Then Range("b" & x + 6).Value = ComboBox5.Value
If Val(Controls(CheckBox & x)) And Val(Controls(ComboBox & x)) = 4 Then Range("b" & x + 6).Value = ComboBox5.Value
Next
 
Yanıt :

Kodlarınızı aşağıdaki şekilde kısalttım. Dener misiniz ?
Kod:
Private Sub CommandButton1_Click()
Dim syf As Worksheet, a As Byte, i As Byte
Set syf = Sheets("Sayfa1")
For i = 1 To 4 : If Me.Controls("CheckBox" & i).Value = True Then
For a = 1 To 8 : If a = Me.Controls("ComboBox" & i).Value Then
syf.Cells(i + 6, Me.Controls("ComboBox" & i).Value * vbOK + vbOK) = ComboBox5.Value : End If
Next a : End If : Next i : Set syf = Nothing: i = Empty: a = Empty
End Sub
 

Ekli dosyalar

Son düzenleme:
Birkaç değişiklik yaptım, daha önce verdiğim kodda hata vardı, userforma combobox6 yı ekledim buradan alanı seçebiliyoruz, fazladan tırnaklar vardı onları sildim, son hali ekli.


Kod:
Private Sub CommandButton1_Click()
Sheets("Sayfa1").Select
alan = UserForm1.ComboBox6.Value
For x = 1 To 4
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 1 Then Cells(x + 6, 2 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 2 Then Cells(x + 6, 3 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 3 Then Cells(x + 6, 4 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 4 Then Cells(x + 6, 5 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 5 Then Cells(x + 6, 6 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 6 Then Cells(x + 6, 7 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 7 Then Cells(x + 6, 8 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
    If UserForm1.Controls("CheckBox" & x).Value And UserForm1.Controls("ComboBox" & x).Value = 8 Then Cells(x + 6, 9 + (alan - 1) * 8).Value = UserForm1.ComboBox5.Value
Next

aciklama = "Kayıt işlemi tamamlandı."
dugme = vbOKOnly + vbInformation + vbDefaultButton1
baslik = "KAYIT"
MsgBox aciklama, dugme, baslik
Unload Me
UserForm1.Show

End Sub
 

Ekli dosyalar

Sayın dEdE, Sayın Tarkan VURAL ve Sayın janveljan,

Dosyalara ancak bakabiliyorum. Çünkü, benden kaynaklanan bir problemden dolayı forumdan hiç bir dosyaya ulaşamıyordum ve sizlere teşekkür bile edemiyordum. Forum bana tamamıyla kapanmıştı. Neyseki Sayın Levent MENTEŞOĞLU problemimi çözdü ve artık sitedeki dosyalara ve bilgilere ulaşabiliyorum. Bu nedenle de geç de olsa hepinize ayrı ayrı teşekkür ederim!!!
 
Değerli üyeler,
Sayın janvaljan'ın hazırlamış olduğu kodlar ile sayfaya userform ile şartlı veri girişi yapabiliyorum.
Örneğin;
Belirlenen alanda 8 sütun var. Hangi satırdaki bu sütunlardan hangisine veri aktarmak isiyorsam alanı combo ile, satırı checkbox ile ve alandaki hücreyi de combo ile belirliyorum ve aktar buttonu ile veriyi belirlenen hücreye aktarabiliyorum. Ancak, aynı alandaki aynı satırda yer alan 8 sütundan sadece 1 tanesini seçme şansım var. Aynı veriyi aynı alan ve aynı satırda yer alan 8 sütundan sadece 1 tanesine aktarabiliyorum. 2. sini aktaramıyorum. Acaba aynı alan, aynı satırda yer alan 8 sütundan 1 den fazla seçme şansım olamaz mı?

Örnek dosyam ve açıklamaları ektedir. Yardımlarınız için şimdiden çok teşekkürler!!!
 

Ekli dosyalar

Değerli üyeler,
Cevap gelmediğine göre talep ettiğim olamıyor diye mi düşüneyim. Eğer böyleyse lütfen olamayacağı bildirilirse çok mutlu olurum. Hem beklentiden kurtulurum hem de dosaymın sürekli olarak gündemde kalmaması sağlanır.
Yardımlarınız için şimdiden çok teşekkürler!!!
 
Olur, olur. Yapmak istediğiniz şey Ali seçip şu günlerde şu alana yerleştir ise yapılabilir bir şey. Bu arada UserForm_Activate kodlarınız çok fazla uzamış aşağıdaki gibi kısaltabilirsiniz ;)

Kod:
Private Sub UserForm_Activate()
Dim i As Integer
  For i = 1 To 31
    Me.Controls("TextBox" & i).Value = Cells(i + 6, 1).Value
  Next i
i = Empty
End Sub
 
UserForm_Initialize kodlarınız da fazlaymış, onu da kısaltalım ;
Kod:
Private Sub UserForm_Initialize()
Dim a As Integer
  Do
    Me.Controls("Combobox" & a + 1).RowSource = "Sayfa2!c2:c150"
      a = a + 1
  Loop Until a > 31
    ComboBox32.RowSource = "Sayfa2!a2:a150"
      ComboBox33.RowSource = "Sayfa2!b2:b150"
        TextBox31 = Format(Date, "dd/mm/yyyy")
          a = Empty
End Sub
 
Sayın Tarkan VURAL,
Yardımlarınız için çok teşekkür ederim. Evet yapmak istediğim aynen cevabınızdaki gibi. Yani Aliyi seçeceğim ve şu günlerde şu alana yerleştir diyeceğim. Eğer alan diye tanımlanan aynı sayfada olamıyorsa farklı sayfalarda da olabilir.
Örneğin; Şöyle diyorum. Sayfa 1 = alan 1, Sayfa 2 = alan 2 , Sayfa 3 = alan 4 olarak tanımlansın. Zaten bu durumda bütün sayfalardaki alanlar aynı olacak (Tarih 1 in karşılığı olan A7 den başlayan hücre ile son tarih karşılığı olan H37 arası)

Bu durumda da Userform üzerinden alan 1 seçildiğinde Sayfa 1 de belirlenen alanlara veri aktarılacak, alan 2 tanımlandığında da Sayfa 2 de tanımlanan alanlara veri aktarılacak ve bu şekilde her seçilen alana göre tanımlanmış değişik sayfalardaki alanlara kayıt yapılabilir. Eğer bu şekilde olabilirse sonradan formül yoluyla hepsini tek sayfaya (yani dosyamdaki gibi tek bir sayfaya) toplayabilirim.

Yardımlarınız için şimdiden çok teşekkür ederim!!!
 
Selam Erdinç Bey kolay gelsin; size fikir vermesi açısından birkaç husustan bahsetmek istiyorum.
1. Tarkan Beyin UserForm_Activate() ve UserForm_Initialize() kodlarını kısattığı gibi sizde CommandButton1_Click() komutlarını kısaltabilirsin, bunu yaparken her satırda aynı olan ve değişen kısımları gözden geçirip değişen kısımları x değişkeni ile bağlantılandırın.2.

2.Bir satıra birden fazla değer girmek için tasarımı biraz değiştirmek gerekiyor, çok fazla değişiklik yapmadan yapılabilecek birşey şu textboxları combobox ile değiştirip, tarih değerlerini comboxa aldırıp teker teker bunlarıda seçtirmek, böyle olunca her satırı birden fazla kez seçebilirsiniz.

3. Diğer bir husus Comboboxların style özellikleri
Combobox1.Style=fmStyleDropDownList' bu durumda sadece listedeki değerler girilebilir
Combobox1.Style=fmStyleDropDownCombo 'bu durumda listeden seçim yapmanın haricinde dışarıdan veri girişi de yapılabilir.
Kodların hata vermemesi için uygun özellikleri atamak lazım.

4.Birde alan numarası ve girilecek değer kısmının boş geçilmemesi lazım, buraya da kontrol ile ilgili birkaç satır kod yazmakta fayda var. Boşsa işlemi yapma gibi..

Şimdilik bu kadar kolay gelsin tekrar.
 
Sayın Janveljan,
Karşılıksız yardım eden insanlar olarak ne kadar iyisiniz. Ama benim kodlarla ilgili bilgi ve becerim söylediklerinizi yapmaya yetmiyor (kırkından sonra kolay olmuyor). Eğer bana küçücük bir örnek hazırlayarak yardımcı olursanız çok sevinirim.
Her şey için şimdiden çok teşekkürle!!!
 
Sayın Janveljan,
Yardımınız için çok teşekkür ederim. Önceki mesajımda da bahsettiğim gibi söylediğiniz değişiklikleri yapabilecek kadar kod yazma bilgisine sahip değilim. Eğer bana küçücük bir örnek hazırlayarak yardımcı olursanız çok sevinirim.
Her şey için şimdiden çok teşekkürler!!!
 
Erdinç bey formu yeniden tasarladım, textboxlar yerine combobox koydum satırları gösteren tarihleri sizin seçmeniz gerekiyor, aynı satırı birden fazla kez de seçebilirsiniz böylece. Alan ve veri kısmını boş geçmeyi engellemek için birkaç kod yazdım hata mesajı veriyor. Birde checkbox işaretli olduğu halde tarih veya sütun seçilmemiş ise onda da hata veriyor. Bir sonraki aşamada checkboxlarıda kaldımak lazım çünkü fazla bir işlevi yok, tarih seçilmiş ise işlemleri yaptırmak mümkün.
Comboxlarıda aşağı doğru 30 tane çoğaltmak da mümkün kodlarda birkaç sayı haricinde bir değişiklik olmaz ancak çok büyük bir form oluyor o zaman o yüzden 15 satırlık yaptım.
 

Ekli dosyalar

Sayın Janjelvan,
Yardımınız ve ilginiz için çok çok teşekkür ederim. Merak ettiğim bir şey var. Combolara veri alacağımıza göre alanı checkboxlar olmadan belirlemek daha iyi olmaz mı? Sanki bu durumda bana checkboxların işlevi kalmıyor gibi geliyor. Yardımlarınız için tekrar tekrar çok ama çok teşekkür ederim. Her şey gönlünüzce olsun. Bileğinize, beyninize ve de en önemlisi yüreğinize sağlık!!!
 
Erdinç bey formu yeniden tasarladım, textboxlar yerine combobox koydum satırları gösteren tarihleri sizin seçmeniz gerekiyor, aynı satırı birden fazla kez de seçebilirsiniz böylece. Alan ve veri kısmını boş geçmeyi engellemek için birkaç kod yazdım hata mesajı veriyor. Birde checkbox işaretli olduğu halde tarih veya sütun seçilmemiş ise onda da hata veriyor. Bir sonraki aşamada checkboxlarıda kaldımak lazım çünkü fazla bir işlevi yok, tarih seçilmiş ise işlemleri yaptırmak mümkün.
Comboxlarıda aşağı doğru 30 tane çoğaltmak da mümkün kodlarda birkaç sayı haricinde bir değişiklik olmaz ancak çok büyük bir form oluyor o zaman o yüzden 15 satırlık yaptım.
Haklısınız, checkboxları kaldırdım yeni versiyon ekte
 

Ekli dosyalar

Geri
Üst