ListBoxtan Sayfaya Kayıt Ekleme

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Bu arada, İMZA blokunda kullandığınız notta 2003 Türkçe yazılı, o bilgiyi güncelleyin isterseniz.
Kolay gelsin.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.

Birkaç hususta fikrimi belirteyim. Bunlar, olayı sayfadan tamamen koparmaya yönelik fikirler olacak tabi ve tercihinize kalmıştır.

Formda, üstte uygun bir konuma 1 adet CheckBox ekleyin.
Bu CheckBox'un amacı yapılacak işlemin Kayıtlar sayfasına tamamen YENİ bir kayıt mı yapılacağı,
yoksa mevcut kayıtlarda GÜNCELLEME mi yapılacağı sorusunun cevabı olsun.
Yeni kayıt için de bir adet yeni Frame eklenip (YENİ KAYIT BİLGİLERİNİN GİRİŞİNİN YAPILACAĞI FRAME)
bu frame içerisine de yeni kayıt için gerekli olacak nesneler (Combobox, TextBox vs) eklenir.
Bu frame ile mevcut formdaki Frame2 aynı konum ve boyutta olacak şekilde ayarlanır.

-- CheckBox seçili ise;
... eklenen yeni frame görünür yapılır (visible özelliği üzerinden),
... referans seçimi yapılan frame ve sol taraftaki frame gizlenir (visible özelliği üzerinden)
... Kaydet düğmesinin Caption metni durumu göre değiştirilir.
-- CheckBox seçili değil ise de;
... eklenen yeni frame gizlenir (visible özelliği üzerinden),
... referans seçimi yapılan frame ve sol taraftaki frame görünür hale getirilir (visible özelliği üzerinden)
... Kaydet düğmesinin Caption metni CheckBox'un durumuna göre değiştirilir.

Ekleyeceğiniz yeni kayıt frame'inin içerisine;
... Bir TextBox'a kayıt için kullanılacak TARİH ve başka bir TextBox'a da (veya aynı textboxta da olabilir) saat bilgisi girilsin ya da
forumda arama yaparak bulabileceğiniz takvim formundan tarih / saat seçimi de düşünülebilir.
... Eklenecek olan Combox'lardan seçim yapılarak MAHALLE/CADDE vs (en genelden en özele doğru sıra izleyerek) seçimleri yapılır
Bu seçimlere göre diğer alanlar Veri Tabanı sayfasından çağrılabilir/çağrılmadan da kayıt gerçekleşebilir (işleyişi tasarlarsınız artık)
... Referans numarasının mutlaka bir mantığı (YIL&AY&GÜN&SAAT&MAHALLE KODU... gibi bir algoritma) olmalıdır diye düşünüyorum ve
bu mantığa göre REFERANS numarası oluşturulur,
... KAYDET düğmesinin kodlarına da; belirttiğim ilk CheckBox seçili ise "yeni kayıt", değilse seçilen referans numarasına göre "güncellem"e şeklinde
ilave yapılmalıdır.
... Kaydet düğmesiyle de Kayıtlar sayfasında ilk boş satıra kayıt yapılır.

Belgede sadece bir düğmeye tıklanarak userform açılır.
Önerimi iyice bir düşünün, işleyişi kafanızda netleştirdikten sonra akışı planlayıp devam edersiniz (biraz emek harcamanız lazım bunlar için).
.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Ömer Hocam, Aşağıdaki gibi Kode yazdım ama işe yaramadı.

Private Sub CheckBox1_Click()
If CheckBox1.Enabled = True Then
ComboBox2.Visible = True
Else
ComboBox2.Visible = False
End If
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Aşağıdaki gibi deneyin.
Rich (BB code):
Private Sub CheckBox1_Click()
    If CheckBox1 = True Then
        ComboBox2.Visible = True
    Else
        ComboBox2.Visible = False
    End If
End Sub
 
Son düzenleme:

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Teşekkür Ederim Hocam, Bir sorum daha olabilir mi Acaba?
User Form üzerine 2 Adet Frame var. Bu Frameleri CheckBox dan seçim yaparak aynı yerde üst üste çalıştırabilir miyim? Yani CheckBox seçili iken "KAYIT İŞLEMLERİ" Farme2 aktif olacak; CheckBox boştayken de "ZİYARETE GİDEN KİŞİLER" görünecek. ama ikisinin de Yüksekliği 324, Eni 294 olarak üst üste duracak.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Önceki cevabımda belirtmiştim sanırım.
Her iki frame'in yükseklik ve genişliğini (önce üst üste durmasın) aynı olarak ayarlayın.
Sonra da CheckBox'un durumuna göre visible özelliğini True yaptığınız frame'in TOP ve LEFT değerlerini aynı yaparak işlem istediğiniz gibi olur.
Aşağıdaki kod'daki Frame numaralarını değiştirmeyi unutmayın.
Tabi KAYDET düğmesi kodlarına CheckBox'un değerine göre hangi işlemi yapacağını belirten kodlar ilave etmeniz gerekir.
Rich (BB code):
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
    Frame3.Visible = False
   
    Frame2.Visible = True
    Frame2.Top = 48
    Frame2.Left = 6
Else
    Frame2.Visible = False
   
    Frame3.Visible = True
    Frame3.Top = 48
    Frame3.Left = 6
End If
End Sub
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Merhaba Hocam,
Ekli Resim dosyasında işaretlediğim gibi CheckBox çok güzel çalışmakta. Ancak, Güncelleme işlemini Referans numarasına göre yapamadım.
 

Ekli dosyalar

Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Sorunuzu/ihtiyacı tam anlamamış olabilirim.

Userform açıldığında hangi nesneler görünür olacaksa ve
bunlardan hangilerinin dolu olması gerekiyorsa esas olarak, onlar için benzer kod oluşturmak gerekir.

İki nesne de, Kayıtlar sayfasından ve R sütununda x olan satırlardaki verileri alacaksa;
If.... satırından bir tane de diğer nesre için kod satırı eklemelisiniz,
nesnelerden bir başka bir sayfadan (VeriTabanındaki tüm mahalle adları gibi) alınacaksa, o'nun için
koşul olmayacağına göre doğrudan RowSource özelliğine yönelik tek bir kod satırı yeterli olacaktır.
.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Sorunuzu/ihtiyacı tam anlamamış olabilirim.

Userform açıldığında hangi nesneler görünür olacaksa ve
bunlardan hangilerinin dolu olması gerekiyorsa onlar için benzer kod oluşturmak gerekir.
İki nesne de, aynı sayfadan ve R sütununda x olan satırlardaki verileri alacaksa;
If(li olan satırdan bir tane de diğer nesre için kod satırı eklemelisiniz,
nesnelerden bir bayka bir sayfadan (VeriTabanındaki tüm mahalle adları gibi) o'nun için
koşul olmayacağına göre doğrudan RowSource özelliğine yönelik tek bir kod satırı yeterli olacaktır.
.

Tamam, Hallettim Hocam. Teşekkür Ederim.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Önce bir önceki cevabımı okuyunuz.
Son sorunuzdaki ekran görüntüsünü yeni fark ettim.
Combobox değerini WorksheetFunction.Match.... şeklinde aratıp satır numarasını buldurun ve onun üzerinden yürüyün.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Hocam Bir önceki sorularımın hepsi tamamdır. Sizde bu akşamlık bir soru daha sormak istiyorum. Aşaığıdaki kodu ComboBox3 nesnesine yazdım. hata veriyor. Bir de ricam acaba, ComboBox3 de veri varken Label24, Label25, Label26, TextBox18, TextBox19 ve TextBox20 Pasif hale diğer TextBox lar aktif hale gelebilir mi?


If ComboBox3 <> "" Then
Satir = Worksheets("Kayıtlar").Range("B65530").End(3).Row
Satir = WorksheetFunction.Match(ComboBox3, Sheets("Kayıtlar").[B:B], 0)
TextBox1 = Sheets("Kayıtlar").Cells(Satir, "C")
TextBox2 = Sheets("Kayıtlar").Cells(Satir, "D")
TextBox3 = Sheets("Kayıtlar").Cells(Satir, "E")
TextBox4 = Sheets("Kayıtlar").Cells(Satir, "F")
TextBox5 = Sheets("Kayıtlar").Cells(Satir, "G")
End If
End Sub
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Match işleviyle sonuç alabilmeniz için, önce aranan verinin arama aldığında VAR olup olmadığını tespit etmeniz lazım.
Bunun için If ...Countif... > 0 then ya da
Set sat= range(....).find(aranan)
If not sat Is nothing then...
gibi VARlık kontrolü eklemeniz lazım.
Bu if blokunun içine varsa .....işlemlerini yap, Else şunu yap gibi bir yapı kurun.
Bilgisayar başında olmadığımdan ancak bu kadar tarif edebiliyorum, belgeye bakmadım.
Aktif/pasif olayı için ... ENABLE= False/True yapısını kullanın.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Sayfayı yenileyerek bir önceki cevabıma tekrar bakın.
Son kısmına ekleme yapmıştım.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Merhaba Değerli Hocalarım,
Ekli dosyadaki projemde Mahalle adını - Referans No seçtikten sonra Saha Verilerini değiştir CheckBox2 seçiyorum. TextBoxlar aktif hale geliyor. Değiştir dediğimde Hata veriyor. Bir de Sil işlemini yapamadım. Yardımcı olabilir misiniz? Teşekkür ederim.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Mevcut userform'da işleyişi tam anlamadım.
Sayfada hücreyi seçtiğinizde; seçilen gün için bir randevu olsa da olmasa da form açılıyor
(en alttaki label nesnesinde de seçilen gün ve saat verisi yazılı durumda)
Üstteki Comboboxta tüm mahalle isimleri mevcut.

Maksatınız seçilen hücrenin temsil ettiği tarih saat (alttaki label da görünen) için kayıtlı veri varsa bunu görüntülemek,
istiyorsanız da bu verilerde (Kayıtlar sayfasının ilgili satırında) değişiklik yapabilmek mi?
O zaman tek referans numarası, hem mahalleyi, hem cadde sokak, ziyarete giden bilgileri, ziyaret edilen bilgileri vs, KAyıtlar sayfasındaki bir adet satırı temsil etmiyor mu? Aynı referans numarasıyla bir'den fazla ziyaret bilgisi girilebilecek mi ki; dolu randevu tarih/saatini seçtiğinizde mahalleyi vs. tekrar seçmek istilorsunuz, bu bilgiler zaten Kaıtlar sayfasında referans no satırında mevcut. neden listeden mahalle seçimi yapılsın?

Yoksa zaten projenizi tamamladığınızda form'u hücre seçerek değil bir düğme ile açıp, mahalle/referans vs bilgileri kayıt/güncelleme/silme vs tüm belgeyi form üzerinden mi kullanmayı düşünüyorsunuz?

Ayrıca iki Combobox'un altındaki iki adet Onay Kutusu'nun tam ne için kullanacağınız anlaşılmıyor.
İkisi birden işaretyenebiliyor biliyorsunuz bunların.
Eğer ya biri ya diğeri seçilecek ise OnayKutusu yerine OptionButton (radio buton-seçenek düğmesi) nesnesi kullanın ki, biri seçildiğinde diğerindeki seçim temizlensin, seçilene göre devamındaki işlemler yapılabilsin.

Söylenecek başka şeyler de var ama, önemli olan sizin nasıl tasarladığınız, kafanızdaki kullanım senaryosunun ne olduğu.
.
 

muhammethezer

Altın Üye
Katılım
12 Şubat 2006
Mesajlar
411
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
12-03-2026
Mevcut userform'da işleyişi tam anlamadım.
Sayfada hücreyi seçtiğinizde; seçilen gün için bir randevu olsa da olmasa da form açılıyor
(en alttaki label nesnesinde de seçilen gün ve saat verisi yazılı durumda)
Üstteki Comboboxta tüm mahalle isimleri mevcut.

Maksatınız seçilen hücrenin temsil ettiği tarih saat (alttaki label da görünen) için kayıtlı veri varsa bunu görüntülemek,
istiyorsanız da bu verilerde (Kayıtlar sayfasının ilgili satırında) değişiklik yapabilmek mi?
O zaman tek referans numarası, hem mahalleyi, hem cadde sokak, ziyarete giden bilgileri, ziyaret edilen bilgileri vs, KAyıtlar sayfasındaki bir adet satırı temsil etmiyor mu? Aynı referans numarasıyla bir'den fazla ziyaret bilgisi girilebilecek mi ki; dolu randevu tarih/saatini seçtiğinizde mahalleyi vs. tekrar seçmek istilorsunuz, bu bilgiler zaten Kaıtlar sayfasında referans no satırında mevcut. neden listeden mahalle seçimi yapılsın?

Yoksa zaten projenizi tamamladığınızda form'u hücre seçerek değil bir düğme ile açıp, mahalle/referans vs bilgileri kayıt/güncelleme/silme vs tüm belgeyi form üzerinden mi kullanmayı düşünüyorsunuz?

Ayrıca iki Combobox'un altındaki iki adet Onay Kutusu'nun tam ne için kullanacağınız anlaşılmıyor.
İkisi birden işaretyenebiliyor biliyorsunuz bunların.
Eğer ya biri ya diğeri seçilecek ise OnayKutusu yerine OptionButton (radio buton-seçenek düğmesi) nesnesi kullanın ki, biri seçildiğinde diğerindeki seçim temizlensin, seçilene göre devamındaki işlemler yapılabilsin.

Söylenecek başka şeyler de var ama, önemli olan sizin nasıl tasarladığınız, kafanızdaki kullanım senaryosunun ne olduğu.
.

Hayırlı Geceler Hocam, Affınıza sığınıyorum.
Yapmak istediğim işlem kısaca;
1-Hücreyi (Örn: C4) seçtiğimde açılan User Form üzerinden seçtiğim mahalle, Cadde/Sokak, Ziyaret Nedeni, Ziyaret Türü ve bu ziyarete kimlerin gideceğini seçili hücredeki tarihe atamak. Bu işlem aynı hücrede bir mahallede olabilir birden çok mahalle seçimi de olabilir.
2-Hücreyi (Örn: C4) seçtiğimde açılan User Form üzerinden seçtiğim mahalle daha önceden atama yapılmışsa Referans kutusunda bu mahalle ile ilgili Referans numaraları gelecek. Yapılan Üye, Ulaşılan Seçmen ve dağıtılan Broşür kısımları boşsa ( Burası gözle kontrol) Saha Verilerini Güncelle kutusu işaretlenerek açılan Frame üzerinden geri dönüş yapılım evrak detay bilgileri girilecek ve kayıt işlemi yapılacak.
3-Hücreyi (Örn: C4) seçtiğimde açılan User Form üzerinden seçtiğim mahalle daha önceden atama yapılmışsa ve hatalı bir giriş varsa Saha Verilerini Değiştir kutusu işaretlenerek kapalı TextBoxlar aktif olacak ve ilgili değişiklikler yapılarak Kayıt işlemi yapılacak.
4-Hücreyi (Örn: C4) seçtiğimde açılan User Form üzerinden seçtiğim mahalle daha önceden atama yapılmışsa Kayıt işleminden sonra ilgili hücre içerisinde bu kayıtlı Mahallelerin bir Listesini Açıklama Penceresi içerisinde görmek. Seçili hücreye atama yapılmışsa Hücre rengi "Yeşil" atama yapılmamışsa da hücre rengi "Turkuaz" olacak.

Yavaş ve emin adımlarla ilerlemek istediğim için kafam biraz karıştı. Excel konusunda siz değerli Hocalarım gibi uzman değilim, Dolayısı ile bu projeyi hazırlamak uzun sürüyor. hatalarım ve yanlışlarımın olması muhakkak.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
1-Hücreyi (Örn: C4) seçtiğimde açılan User Form üzerinden seçtiğim mahalle, Cadde/Sokak, Ziyaret Nedeni, Ziyaret Türü ve bu ziyarete kimlerin gideceğini seçili hücredeki tarihe atamak. Bu işlem aynı hücrede bir mahallede olabilir birden çok mahalle seçimi de olabilir.
2-Hücreyi (Örn: C4) seçtiğimde açılan User Form üzerinden seçtiğim mahalle daha önceden atama yapılmışsa Referans kutusunda bu mahalle ile ilgili Referans numaraları gelecek. Yapılan Üye, Ulaşılan Seçmen ve dağıtılan Broşür kısımları boşsa ( Burası gözle kontrol) Saha Verilerini Güncelle kutusu işaretlenerek açılan Frame üzerinden geri dönüş yapılım evrak detay bilgileri girilecek ve kayıt işlemi yapılacak.
Sorunuzdaki 1 numaralı madde ile başlayalım.
-- Kayıtlar sayfasında R sütununa, Günlük sayfasında seçilen tarih ve saat aralığında olan satırlar için x yazdırılıyor ve
bu x lerden hareketle de alttaki Combobox'ta yer alan referans numaraları listelenerek userform açıldı.
-- bunlardan biri seildiğinde de Kayıtlar sayfasında, seçilen referans numarasının bulunduğu satırdaki veriler ilgili textboxlara getirildi.
1. Bu aşamada iken bence alttaki onay kutusularından soldaki seçili gelmemelidir.
(bunun için ComboBox2_Change kodlarına, CheckBox1=False şeklinde bir satır ilave edilmelidir)
2. Bu ilave yapıldı diyelim. Bu aşamada DEĞİŞTİR düğmesinin (seçilen referans kodunun bulunduğu satırdaki verilerin değiştirilmesi için kullanılacağını sanıyorum) kullanılabilmesi için öncelikle ChecBox2'ye ait Click kodlarında If CheckBox2 =True then....textboxlar.enable=True, değiştir düğmesi.Enable=true.....Else textboxlar.enable =False, değiştir düğmesi.enable=false..... End If şeklinde kod değişikliği/eklemesi olmalı.
3. Bu eklemeler de yapıldı diyelim. Textboxlara yeni veriler yazıldı ve değiştir düğmesine tıklanacak.
Değiştir düğmesi üzerinden işlem yapılacak Kayıtlar sayfası satırı, combobox2'de seçilen referans numarasının satır numarasıdır.
Dolayısıyla; bu düğmenin kodları aşağıdaki şekilde olmalıdır (Textbox1 sütun 3'e,Textbox2 sütun 4'e, Textbox3 sütun 5'e gibi TextBox isimleriyle kayıt yapılacak sütun numaraları arasında sayısal bir düzen olduğunu varsayıyorum) .
Rich (BB code):
sat = WorksheetFunction.Match(ComboBox2, Sheets("Kayıtlar").[B:B], 0)
For sut = 3 To 15
    Cells(sat, sut) = Controls("TextBox" & sut - 2).Value
Next
MsgBox "Kayıt Değiştirilmiştir!", vbInformation
4. Yeni eklediğiniz Frame4'teki textboxlara yazılacak veriler için de textbox isimleri ile kaydın yapılacağı sütun numarası arasında belli bir sayısal ilişki oluşturarak benzeri işlem yapılmalıdır.
DEĞİŞTİR işleminin yukarıdaki açıklamalarıma göre (enable, visible, textbox numaraları kontrolü) tamamlanmış olması gerekir.
DEĞİŞTİR düğmesini halledip örnek belgeyi yenileyince (örnek belgelere isim verirken 1,2,3 gibi sonuna veya başına ekleme yapın ki karışıklık olmasın) diğerlerine de bakmaya çalışırım.
 
Üst