D

Çözüldü UserForm Kaydet Güncelle Mükerrer Kayıt Engelle

  • Konuyu başlatan Konuyu başlatan dimple
  • Başlangıç tarihi Başlangıç tarihi

dimple

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba yaptığım çalışmada iki ayrı arama butonum var.1. ADAY ARA (Verileri sayfa2 den alıyor) 2. ÖĞRENCİ ARA (Verileri Data sayfasından alıyor) İşlemi yapıyor ama evet seçeneğinden sonra veriler dolu textbox taki bilgiler kalacak (kalıyor) hayır seçeneğinden sonra textboxlar temizlenip yeni sorgu için imleç textbox1 e gelmesini , aynı şekilde aradığınız kayıt bulunamadı sonrasındaki tamamdan sonra textbox1e gelmesini nasıl yapabilirim Ve kaydet işlemini 1,2,3 gibi sıralı bir şekilde hem Data sayfası hem listbox görünmesini nasıl yapabilirim.(Listbox a kaydettiğim veriler ancak sayfan çıktıktan sonra görünüyor kayıt yapınca aynı anda görünmesini sağlayabilirim Dosyamı ekliyorum
 

Ekli dosyalar

Merhabalar Sn. @dimple
ExcelDestek.com'a hoş geldiniz.

Aday Bul düğmesindeki işlemde mesaj sonrası Textbox'ların temizlenmesi için aşağıdaki işlemleri yapınız.
** Yapacağımız işlemleri nedenleri ile açıklamaya çalışayım.

-- Öncelikle mesaj kutusunda evet ya da hayır düğmesine tıkladığımız zaman işlem yapabilmek için mesaj kutusunu bir değişkene eşitlememiz gerekiyor. Bu nedenle
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
bu satırı aşağıdaki satır ile değiştiriniz.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
Burada benim seçtiğim değişken ismi soru , bunu istediğiniz gibi değiştirebilirsiniz.

-- Mesaj kutusundaki evet ya da hayır düğmesi tıklandığında bu değişkene bir atama olacak. Yapılan bu işlemi de koşul içinde kullanıp istediğimiz işlemi yaptırabiliriz.
** İstediğiniz işlem Hayır tıklanırsa, Textbox'ların içeriği temizlensin.
Bu işlemin kod karşılığı aşağıdaki gibidir.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(6 satır)
Temizleme işlemi için temel olarak TextBox1.Text = "" kullanıldığı gibi TextBox1.Text = Empty de kullanılabilir.
Ancak temizlenmesi gereken nesne sayısı fazla ise döngü kullanmanız daha uygun olur.

-- Diğer bir işlem ise Temizleme işleminden sonra imlecin istenilen TextBox'a gelmesi. Bunu sağlayan komut SetFocus ve kullanımı aşağıdaki gibidir.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

Yukarıdaki işlemler sonrası oluşacak kod satırları aşağıdaki gibidir.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(9 satır)

-- Bir sonraki işlem ise kayıtların Listbox'ta görünmesi.
UserForm_Initialize ile form açıldığı anda kayıtları Listbox'a alıyorsunuz.
Kaydet kodlarının en altına bu satırı eklediğiniz zaman kaydetme işleminden sonra verilerin yüklenmesi için form yenilenir.
-- Kaydet kodlarında End Sub satırının üzerine UserForm_Initialize satırını ekleyiniz.
 
Hoşbulduk Sayın AhmetRasim ve ExcelDestek sitesi. Yardımınız için çok teşekkür ederim. İki sorunu mu çözmüş olduk. Aynı kodları Öğrenci Ara kullanabilmem için kaç adet textbox ve combox varsa yazmam gerekiyor sanırım (Enfazla kaç adet yazabiliriz). Hayır cevabından sonra yine TextBox1 e dönüş yapmak istiyorum ve son soru listbox kaydettiğimiz verilere sıra numarası nasıl verebiliriz.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(32 satır)
 
Moderatörün son düzenlenenleri:
Merhabalar,
Temizlemek istediğiniz her nesneyi tek tek yazarak işlem yapabilirsiniz ancak 2 numaralı mesajda "Ancak temizlenmesi gereken nesne sayısı fazla ise döngü kullanmanız daha uygun olur." ifadesini kullanmıştım. Şimdi bunun için her zaman kullanabileceğiniz kalıp bir döngü örneği paylaşayım.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(6 satır)
Kısaca açıklamak gerekirse nesne isimli kontrol değişkeni oluşturulup, döngü ile form üzerindeki nesnelerin Textbox mı ComboBox mı olduğu kontrol edilir. Eğer TextBox ya da ComboBox ise nesne içeriği temizlenir.

2 numaralı mesajda mesaj kutusundan gelecek cevaba göre koşul oluşturmadan bahsetmiştik, aynı işlem burası için de geçerli.
-- İlgili kodlar aşağıdaki gibidir.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(11 satır)

-- ListBox içeriğindeki kayıtlara sıra numarası vermek için, Data sayfasındaki kayıt alanında Sıra Numarası için bir sütun oluşturup, sıra numarasını buradan ListBox'a alabilirsiniz.

Ancak;
** Yeni açılacak olan bu sütun mevcut kodlarınızda güncelleme yapmanızı gerektirecek.
 
Desteğiniz için çok teşekkür ederim AhmetRasim bey .Ben dosya üzerinde gerekli değişiklikleri yapayım bakalım yapabilecek miyim. Sıra numarasını en başta hiç düşünememişim.
 
Merhabalar Sn. @dimple
Dosyanıza sıra numarası ekledim.

*** ListBox'a alınan kayıtlar için Ad Tanımlaması kullanılmış.
İleride yeni bir sütun eklemek isterseniz Ad Yöneticisi içindeki Liste isimli tanımlamayı da güncellemelisiniz.
 

Ekli dosyalar

Sayın AhmetRasim emeğinize sağlık çok teşekkürler istediğim gibi olmuş bende tam ekran yapmak için bir kod ekledim. Kayıtlı öğrenci araması yapıp eksik bilgilerini girdikten sonra güncelle butonuna tıklayınca hata veriyor. Çözemedim. Ve mükerrer kayıt yapmayı nasıl engelleyebiliriz.
 

Ekli dosyalar

Merhaba Sayın AhmetRasim Bey şu sorunu çözdüm ."Kayıtlı öğrenci araması yapıp eksik bilgilerini girdikten sonra güncelle butonuna tıklayınca hata veriyor." İki yeni sorum olacak
1-Doğum tarihi ekrana ay gün yıl olarak geliyor. Kayıt yapınca doğru yapıyor.
2-Bilgi giriş yaparken velisi kim bölümüne gelince imleç anne gsm bölümüne geçiyor. Nasıl sıralı yapabiliriz ve veri giriş yapınca renk değişimi mümkün mü ? ( İç içe soru oldu ama kusura bakmayın.)
 

Ekli dosyalar

Hata veren satır Range("A:A").Find(aranan).Select
-- Hata sebebi: Sıra numarası alanında T.C Kimlik No aramasının yapılması.
Güncelle kodlarını aşağıdaki kodlar ile değiştiriniz.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(20 satır)

-- Mükerrer kayıt engellemek için kaydet kodlarındaki
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
satırından sonra aşağıdaki satırları ekleyiniz.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(5 satır)
 
TextBox'a gelen tarih için Format Fonksiyonunu kullanabilirsiniz.

-- Aday Bul ve Öğrenci Ara düğmelerindeki kod içerisinde bulunan
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
satırını
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
satırı ile değiştiriniz.

-- Güncelle Kodları içindeki
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
satırını da
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
satırı ile değiştiriniz.

-- Tab tuşu ile nesneler arasında ilerlemek için nesnelerin TabIndex özelliği sıralı olmalıdır.
UserForm üzerinde herhangi bir nesneyi seçtiğinizde TabIndex özelliğine Properties bölümünden ulaşabilirsiniz.
1622381391861.webp


Not: Properties bölümü aktif değilse View menüsünden açabilirsiniz.
1622382010241.webp


Velisi Kim başlıklı ComboBox'ın TabIndex numarası 28, Anne Gsm No başlıklı TextBox'ın TabIndex numarası da 22.
Bu nedenle Tab tuşu ile nesneler arasında ilerlerken atmala olur.

-- Nasıl düzeltilir?
Nesneleri sırası ile seçip, TabIndex numarasını sıralı olacak şekilde yeniden vermelisiniz.
 
Moderatörün son düzenlenenleri:
Yardımlarınız için çok çok teşekkür ederim Sayın AhmetRasim hakkınızı helal edin. Birçok yeni şey öğrendim. Dosya üzerinde yeni düzenlemelerle yeni sorularda olacak gibi görünüyor. Saygılarımla
 
Üst