ListBoxtan Sayfaya Kayıt Ekleme

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
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
Bu satır için kodları bu şekilde düzelttim ama hata veriyor.

Sat = WorksheetFunction.Match(ComboBox2, Sheets("Kayıtlar").[B:B], 0)
For sut = 3 To 15
Cells(Sat, sut) = Controls("TextBox" & sut - 2).Value
TextBox1.Text = Sheets("Kayıtlar").Cells(Satir, "C")
TextBox2.Text = Sheets("Kayıtlar").Cells(Satir, "D")
TextBox3.Text = Sheets("Kayıtlar").Cells(Satir, "E")
TextBox4.Text = Sheets("Kayıtlar").Cells(Satir, "F")
TextBox5.Text = Sheets("Kayıtlar").Cells(Satir, "G")
TextBox6.Text = Sheets("Kayıtlar").Cells(Satir, "H")
TextBox7.Text = Sheets("Kayıtlar").Cells(Satir, "I")
TextBox8.Text = Sheets("Kayıtlar").Cells(Satir, "J")
TextBox9.Text = Sheets("Kayıtlar").Cells(Satir, "K")
TextBox10.Text = Sheets("Kayıtlar").Cells(Satir, "L")
TextBox11.Text = Sheets("Kayıtlar").Cells(Satir, "M")
TextBox12.Text = Sheets("Kayıtlar").Cells(Satir, "N")
TextBox13.Text = Sheets("Kayıtlar").Cells(Satir, "O")
TextBox19.Text = Sheets("Kayıtlar").Cells(Satir, "T")
TextBox20.Text = Sheets("Kayıtlar").Cells(Satir, "U")
TextBox18.Text = Sheets("Kayıtlar").Cells(Satir, "V")
Next
MsgBox "Kayıt Değiştirilmiştir!", vbInformation
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
For ... next döngüsünün içindeki ilk satır olan Cells(Sat, sut) = Controls("TextBox" & sut - 2).Value satırı zaten TextBox nesnelerinin değerlerini ilgili satırdaki hücrelere (tümüne) yazıyor. For sut=3 To 15>> 3'üncü sütundan 5'inci sütuna kadar anlamına geliyor. Bu nedenle 15 sayısı, işlem yapılacak son sütunun süutun numarası olmalıdır (yani 22).
Bu nedenle; verdiğiniz koddaki yukarıda belirttiğim satırın altında kalan TextBox... = Sheets("Kayıtlar").Cells(... şeklindeki satırların tümünü (Next satırına kadar) silin.
Kontrol edeceğiniz şey textbox numaraları ile kayıtlar sayfasındaki sütun numaraları arasındaki matematiksel ilişki (ben textbox'un ismindeki sayı kısmını bu nedenle sütun numarası - 2 olarak görmüştüm ve o şekilde yazdım).
Textbox isimlerini, kayıtlar sayfasındaki ilgili sütun numaralarıyla baştan sona kadar sırasıyla kontrol edin, düzene uymayan TextBox numarası varsa,
Kayıtlar sayfasındaki ilgili sütun numarasıyla aynı matematiksel ilişkiyi oluşturacak şekilde yeniden adlandırın.
TextBoxlardan etkilenmeyen sütun için (x yazdırılan sütun) For satırının hemen altına If sut=18 Then sut=19 diye bir satır ekleyin.
 

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 Ömer Hocam, Kodu sizin dediğiniz gibi yaptığımda aşağıdaki resimde bulunduğu şekliyle Günlük Randevu Takvimi sayfasına yazıyor.

Sat = WorksheetFunction.Match(ComboBox2, Sheets("Kayıtlar").[B:B], 0)
For sut = 3 To 22
If sut = 16 Then sut = 17
Cells(Sat, sut) = Controls("TextBox" & sut - 2).Value
MsgBox "Kayıt Değiştirilmiştir!", vbInformation
Next
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
Bilgisayar başında değilim.
Sayfanın adını belirten değişiklik yapın.
Sheets("Günlük Randevu.......").Cells(.....
 

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
Bilgisayar başında değilim.
Sayfanın adını belirten değişiklik yapın.
Sheets("Günlük Randevu.......").Cells(.....
Hocam kod kısmında Sheets("Günlük Randevu.......").Cells(..... şeklinde bir kayıt yok. Sadece UserForm_Initialize() kısmında aşağıdaki gibi kod bloğu bulunmakta.


Set k = Sheets("Kayıtlar")
Set g = Sheets("Günlük Randevu Takvimi")
ComboBox2.Clear
For Sat = 2 To k.Cells(Rows.Count, 1).End(3).Row
If k.Cells(Sat, "R") = "x" Then ComboBox2.AddItem k.Cells(Sat, 2)
Next
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
Son cevabınızdan bir öncekinde resim eklediğiniz mesajdaki kodda
Sheets("Günlük Randevu Takvimi").Cells(Sat, sut) = Controls("TextBox" & sut - 2).Value
eklemesinin yapılmasını söylemiştim, yanlış anlaşılmış demekki.
 

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
Son cevabınızdan bir öncekinde resim eklediğiniz mesajdaki kodda
Sheets("Günlük Randevu Takvimi").Cells(Sat, sut) = Controls("TextBox" & sut - 2).Value
eklemesinin yapılmasını söylemiştim, yanlış anlaşılmış demekki.

Hocam, Belirttiğiniz gibi düzeltmeyi yaptım. Ancak her seferinde "Kayıt Değiştirilmiştir!" uyarısı veriyor ve tüm hücreler için uygulamam gerekiyor. Bir de yeni kayıt işlemi yaptığımda kayıtlar sayfasında mahalle adı "Kayıtlar sayfasında Mahalle adı bulunamadı" uyarısından sonra bir üstündeki IF satırı altında bulunan TextBox1 den TextBox5'e kadar verileri otomatik yazmasını sağlamak istiyorum. Sayfada daha önce mahalle isimi kayıt edilmişse TextBoxlar doluyor.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
Bir önceki cevabımda, cep telefonundan yazarken hatalı düşünmüşüm.
Sayfa adı olarak Kayıtlar kullanılmalıydı.

Ayrıca anlamadığım bir husus da Frame2'nin en alttaki 3 TextBox ile Frake4'deki üstteki 3 Textbox aynı başyığı taşıyor.
Hangi frame'dekini ne için kullanacaksınız, farkları nedir?

Bunları düzeltip, yukarıdaki sorumu da cevaplarsanız konu daha da netleşecek bence.
Belgenin son halini eklermisiniz?
Bir göz atayım.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
Bir önceki cevabımda değişiklik yapmıştım, sayfayı yenileyerek kontrol edip sorduğum husus cevaplar mısınız?
 

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
Bir önceki cevabımda değişiklik yapmıştım, sayfayı yenileyerek kontrol edip sorduğum husus cevaplar mısınız?
Hocam, Frame4 üzerinde bulunan Yapılan Üye Sayısı, Ulaşılan Seçmen Sayısı ve Dağıtılan Broşür Sayısı başlıkları -(Sahaya giden kişiler bu bilgileri sahaya gidip döndükten sonra geri dönüş bilgisi olarak kayıtlar sayfasına işleyecek.)
Frame2 üzerindeki ise sadece girilmiş olan veriyi çağırdığında bilgi amaçlı olarak tasarlamıştım.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
İkisi birden neden var hala anlamadım.
Kayıtlı bilgiyi çağırma alanı ile kayıt alanını birbirinden ayırmanız bana anlamlı gelmedi.
Diğer bilgiler ile üye kayıt vs son üç textbox bilgileri farklı zamanlarda da yapılsa aynı alan kullanılmalı bence.
Üstteki CheckBox ile güncelleme modu (enabled özelliği) açık/kapalı hale gelebiliyor zaten.
Aynı alanda ikisi birden neden olmasın ki?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
İlk gördüğümü söyleyeyim.
DEĞİŞTİR kod blokundaki MsgBox satırını Next ile End Sub satırının arasına alın.
Diğer frame'i görüntülenmesini sağlayan onay kutusu gitti, yani güncelleme için de yeni kayıt için de aynı textboxları kullanacaksınız değil mi?
 

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 kaç süre önce bir proje için araştırma yaparken aşağıdaki kodu bulmuştum. Sayfa üzerinde mouse ile hücreye üzerine gelince Kayıtlar sayfasındaki açıklama bilgisi geliyor. Bu şekilde ilgili hücre için Günlük Randevu Takvimi sayfasındaki ilgili hücrede bulunan tarihe yapılan kayıt işlemini (Kayıtlar sayfası [C] sütununda) bulunan mahalle isimlerini açıklama olarak getirebilir miyiz?

Private Sub Worksheet_Change(ByVal Target As Range)
alan = "I2:I" & Cells(Rows.Count, "A").End(3).Row
If Intersect(Target, Range(alan)) Is Nothing Then Exit Sub
Set wf = Application.WorksheetFunction
Set m = Sheets("MESAİ"): Set md = Sheets("MESAİDATA")
If wf.CountIf(m.[C:C], md.Cells(Target.Row, "B")) = 0 Or _
wf.CountIf(m.[3:3], md.Cells(Target.Row, "A")) = 0 Then Exit Sub
sat = wf.Match(md.Cells(Target.Row, "B"), m.[C:C], 0) + 2
sut = wf.Match(md.Cells(Target.Row, "A"), m.[3:3], 0)
With m.Cells(sat, sut)
.ClearComments
If Target <> "" Then
.AddComment: .Comment.Text Text:=Target.Text
End If
End With
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
Anladığım kadarıyla, daha evvel birkaç kez yazmama rağmen siz işlemler sırasında SAYFAyı kullanmakta ısrarlısınız,
tüm belgeyi userform/userformlar üzerinden yönetmeyi düşünmeyeceksiniz değil mi?

İstediğiniz elbette olabilir ama yazılacak bilgi uzun olursa kullanışlı olmayacağını düşünüyorum.

Belgenizde değişken hücreler biraz fazla Worksheet_Change kodunun oluşturulması çetrefilli olabilir.
Çünkü örneğin tarihi değiştirdiniz, tüm açıklamaların güncellenmesi gerekir,
diyelim saat aralığı bilgisini değiştirdiniz yine tüm hücrelerdeki açıklamaların güncellenmesi gerekir,
diyelim başlangıç saatini değiştirdiniz şine tüm açıklama bilgileri güncellenecek,
ayrıca da yapılan her yeni kaydın da bu açıklamaya eklenmesi gerekecek (tarih/saat bilgisi üzerinden).
Bir sorun da aynı mahalle adının aynı hücrede 1'den fazla tekrarlanma ihtimali var o zaman ne olacak gibi soru işareti var?
Neyse son isteğiniz biraz keyfe keder bir konu belge yönetimi tam olarak oturduktan sonra bakılmasında yarar var sanırım.

Userform ile ilgili birkaç şey söyleyeyim (özet).

-- Yeni kayıt; bunun için üstteki Combobox'tan mahalle seçerek işleme başlanacak ve seçilen mahalleye ait ilk 5 textbox bilgisi buna göre gelecek,
diğer bilgilerden de hangileri girimiş ise KAYDET düğmesiyle kayıt yapılacak (bu sorada alttaki onay kutusu ve combobox'un pasif olması lazım).

-- Eski kayıt; eski kaydın güncellenmesi ise alttaki Combobox'tan referans no seçimiyle birlikte tüm textboxlara bilgiler gelecek,
Onay kutusu seçili değilse işlem, mevcut kaydı görüntüleme işlemi, seçiliyse bigi güncelleme moduna geçilmiş oluyor.
Sistematik bakımdan iyi yapı, sadece basit birkaç düzenleme gerekebilir (ergonomik bakımdan kullanışlı konumlandırma gibi)
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.

Belgenizdeki userform ve kodları neredeyse tamamen değiştirdim ve
sonuçta ekte yer alan bir düzen oluştu. Her şey değişken, tarih/başlangıç saati/saat aralığı vs.
Biraz uğraştırdı açıkçası.
Belge içerisindeki açıklamaları okuyunuz, denemeler yapınız.
Ekteki belge güncellendi. 12.10.2018 15:22
 

Ekli dosyalar

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
Tekrar merhaba.

Belgenizdeki userform ve kodları neredeyse tamamen değiştirdim ve
sonuçta ekte yer alan bir düzen oluştu. Her şey değişken, tarih/başlangıç saati/saat aralığı vs.
Biraz uğraştırdı açıkçası.
Belge içerisindeki açıklamaları okuyunuz, denemeler yapınız.

Hocam,Söyleyecek laf bulamıyorum. İnanın istediğimden daha iyi olmuş. Ellerinize ve gönlünüze sağlık. teşekkür ediyorum.
İzin verirseniz Sormak istediğim bir kaç sorum olacak.

1- Hücrede Göster ve Açıklamada Göster işlemi bir harika. Ancak, 8.10.2018 12:00:00 tarihine 2 veya 4 atama yapılabileceğini göz önünde bulundurursak (C4) hücresi içerisinde ve Açıklamada Göster balonu içerisinde bu bilgilerin referans numarasını getirebilir miyiz? ve Açıklama kısmı (AK-201810110511-ESENKENT MAH.) şeklinde olabilir mi?

2- Günlük Randevu Takvimi sayfası üzerinde ZAMAN ARALIĞI: kısmını 60 dakika haricinde ayarladığımız da sayfanın alt kısımlarına doğru tabloda bozukluklar oluyor. Bu kısmı nasıl düzeltebilirim.

3- TextBox8, TextBox9 ve TextBox10 elemanları için, içerisine ilk üç harfi girildiğinde Cadde ve Sokak Adı, Ziyaret Nedeni ve Ziyaret Türü bilgileri ComboBox mantığı ile gelebilir mi?

4- sil = MsgBox("Silmek istediğinize emin misiniz ? ", vbYesNo) Sil butonuna bastığımda devamlı olarak Evet Hayır butonu çıkıyor.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
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.
Günlük... sayfasının kod bölümünde (sayfa adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçerek erişebilirsiniz)
yer alan Worksheet_Change kod blokundaki aşağıdaki 3 sayılarını 2 yaparsanız istediğiniz olur.
Bu sayılar sütun numaralarıdır, istediğiniz hangi sütun ise o sütunun sütun numarasını yazarak o sütundaki bilgiyi getirebilirsiniz.
aciklama1'ler hücre açıklaması için, aciklama2'ler hücreye yazmak için.
Hücre açıklamasına bir sütundaki veriyi, hücreye başka sütundaki bir veriye çağırmak gerekir diye düşünerek iki ayrı açıklama metni oluşturmuştum, mutlaka aynı sütundan veri alınacaksa tek bir açıklama metni de oluşturulabilirdi ama neyse artık öyle kalsın.
Siz belirttiğim sayıları değiştirerek istenilen sonuca ulaşabilirsiniz.
Rich (BB code):
                If aciklama1 <> "" Then
                    aciklama1 = aciklama1 & " " & k.Cells(ksatir, 2).Value
                    aciklama2 = aciklama2 & Chr(10) & k.Cells(ksatir, 3).Value
                Else
                    aciklama1 = k.Cells(ksatir, 2).Value
                    aciklama2 = k.Cells(ksatir, 3).Value
                End If
 

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
Günlük... sayfasının kod bölümünde (sayfa adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçerek erişebilirsiniz)
yer alan Worksheet_Change kod blokundaki aşağıdaki 3 sayılarını 2 yaparsanız istediğiniz olur.
Bu sayılar sütun numaralarıdır, istediğiniz hangi sütun ise o sütunun sütun numarasını yazarak o sütundaki bilgiyi getirebilirsiniz.
aciklama1'ler hücre açıklaması için, aciklama2'ler hücreye yazmak için.
Hücre açıklamasına bir sütundaki veriyi, hücreye başka sütundaki bir veriye çağırmak gerekir diye düşünerek iki ayrı açıklama metni oluşturmuştum, mutlaka aynı sütundan veri alınacaksa tek bir açıklama metni de oluşturulabilirdi ama neyse artık öyle kalsın.
Siz belirttiğim sayıları değiştirerek istenilen sonuca ulaşabilirsiniz.
Rich (BB code):
                If aciklama1 <> "" Then
                    aciklama1 = aciklama1 & " " & k.Cells(ksatir, 2).Value
                    aciklama2 = aciklama2 & Chr(10) & k.Cells(ksatir, 3).Value
                Else
                    aciklama1 = k.Cells(ksatir, 2).Value
                    aciklama2 = k.Cells(ksatir, 3).Value
                End If

Hocam dediğiniz gibi yaptım. Ancak hücre açıklaması ve hücreye yazma hala tek satır geliyor.
 
Üst