2 Farklı User Formdan Işlem Yapma

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

planyoq

Kullanıcı
Katılım
28 Tem 2022
Mesajlar
77
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Arkadaşlar ekte sunduğum gibi bir excel sayfası hazırladım kendimce öğrenci kayıt butonu aracılığı ile bilgilerini getirdiğim öğrenciyi dönemini sonlandır butonu ile data sayfasından silerek dönemi bitenlere kayıt edebiliyorum 2. bir user form aracılığı ile de ders çizelgesini takip edebiliyorum
istediğim şey tam olarak şu öğrenci kayıt butonu aracılığı ile açılan user formdan bilgilerini çektiğim öğrencinin dönemi bitirme ve dönemi bitenlere aktarma işlemi yaparken almış olduğu dersleri de taşımak istiyorum
yardımlarınız için şimdiden teşekkür ederim
 

Ekli dosyalar

Çözüm
Tablonuzun sonunda bir adet boş tablo satırı bulunması gerekiyor. Kodun satır kopyalama işleminde tablo genişlemediği için biten.Rows(BitenSon).Insert shift:=xlDown kodu ile tabloyu genişletmem gerekti.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(19 satır)
İlk defa bu kadar textbox un bir arada olduğu proje gördüm :)
Aşağıdaki şekilde bir yöntem kullanabilirsinz.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(5 satır)
2Userform.webp
 

Ekli dosyalar

İlk defa bu kadar textbox un bir arada olduğu proje gördüm :)
Aşağıdaki şekilde bir yöntem kullanabilirsinz.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(5 satır)
2Userform.webp
Hocam emeğinize sağlık fakat ya ben tam anlatamadım ya da anlatmak istediğinizi anlayamadım
müsadeniz olursa tekrar arz edeyim
Öğrenci kayıt ve bilgi güncelleme user formunda textbox41 e yazdığım öğrencinin isminin bulunduğu tüm satırı
dönemi bitenlere kayıt butonu ile o sayfaya taşımak ve dönemi sonlandır dediğimde ise aktif olan öğrenci data sayfasından o satırı silmek istiyorum.
Makro konusunda çok iyi değilim o yüzden anlatmak istediğinizi anlayamamış olabilirim
fakat ekteki dosyada denediğimde çalışmadı
 
@planyoq Merhaba ,
Dosyanızda dönemi bitenlere kayıt butonuna bastığınızda textbox41 deki kişi dönemi bitenlere kayıt eden ,
Dönemi sonlandır dediğinizde öğrenci data sayfasından kişiyi silip işlemi bitirmektedir.
Dosyanıza ek olarak userform üzerinde minimize ve ve ekranı kapla özelliği ekledim ayrıca show madalı false yaptım yani userform açıkken sayfaya müdehale edilmiyordu onu kapattım şimdi userform açıkken başka yerlere de mudehale edebilirsiniz. Textbox41 yerine combobox kullanmanızı öneririm userform aktif olduğunda öğrenci data sayfasındaki öğrencileri yüklesin aramada yapılabilecek şekilde olursa daha kullanışlı olur.
1650743391294.webp
 

Ekli dosyalar

Hocam emeğinize sağlık fakat ya ben tam anlatamadım ya da anlatmak istediğinizi anlayamadım
müsadeniz olursa tekrar arz edeyim
Öğrenci kayıt ve bilgi güncelleme user formunda textbox41 e yazdığım öğrencinin isminin bulunduğu tüm satırı
dönemi bitenlere kayıt butonu ile o sayfaya taşımak ve dönemi sonlandır dediğimde ise aktif olan öğrenci data sayfasından o satırı silmek istiyorum.
Makro konusunda çok iyi değilim o yüzden anlatmak istediğinizi anlayamamış olabilirim
fakat ekteki dosyada denediğimde çalışmadı

İki userformu ve kodları siz mi hazırladınız? Eğer siz hazırladıysanız işleşiyi biliyorsunuzdur. O kadar işlemi kontrol etmem mümkün değil malesef.
İki userform yerine tek userformda sekme oluşturarak yapsanızda olurmuş. İstediğiniz işlemi de daha kolay yapardınız.
Önceki mesajımda verdiğim örnekte, kullanmış olduğunuz 'dönemi biten' butonunuzun devamına diğer userformu aktif ederek üzerindeki textboxları yine 'dönemi biten' sayfasına aktarabilirsiniz.
Veya sorgulama yaptığınız öğrencinin bulunduğu satırın tamamını (birinci userform üzerinde görmediğiniz ders notları userformundaki bilgiler dahil) diğer sayfaya satır olarak taşıyabilirsiniz.
Bu işlemi de öğrencinin bulunduğu satır numarasını bulup diğer sayfaya taşıma işlemi yapabilirsiniz.
 
@planyoq Merhaba ,
Dosyanızda dönemi bitenlere kayıt butonuna bastığınızda textbox41 deki kişi dönemi bitenlere kayıt eden ,
Dönemi sonlandır dediğinizde öğrenci data sayfasından kişiyi silip işlemi bitirmektedir.
Dosyanıza ek olarak userform üzerinde minimize ve ve ekranı kapla özelliği ekledim ayrıca show madalı false yaptım yani userform açıkken sayfaya müdehale edilmiyordu onu kapattım şimdi userform açıkken başka yerlere de mudehale edebilirsiniz. Textbox41 yerine combobox kullanmanızı öneririm userform aktif olduğunda öğrenci data sayfasındaki öğrencileri yüklesin aramada yapılabilecek şekilde olursa daha kullanışlı olur.
1650743391294.webp
Hocam öğrenci kayıt butonuna bastığımda şöyle bir hata aldım nedenini anlayamadım
1.webp
 
İki userformu ve kodları siz mi hazırladınız? Eğer siz hazırladıysanız işleşiyi biliyorsunuzdur. O kadar işlemi kontrol etmem mümkün değil malesef.
İki userform yerine tek userformda sekme oluşturarak yapsanızda olurmuş. İstediğiniz işlemi de daha kolay yapardınız.
Önceki mesajımda verdiğim örnekte, kullanmış olduğunuz 'dönemi biten' butonunuzun devamına diğer userformu aktif ederek üzerindeki textboxları yine 'dönemi biten' sayfasına aktarabilirsiniz.
Veya sorgulama yaptığınız öğrencinin bulunduğu satırın tamamını (birinci userform üzerinde görmediğiniz ders notları userformundaki bilgiler dahil) diğer sayfaya satır olarak taşıyabilirsiniz.
Bu işlemi de öğrencinin bulunduğu satır numarasını bulup diğer sayfaya taşıma işlemi yapabilirsiniz.
Hocam kodların çoğunu ya forumunuz yada internette diğer kayıt veri güncelleme diye aratarak bulduğum kodları kendime göre düzenleyerek yaptım yani bire bir ben yazdım dersem doğru olmaz deneme yanılma yöntemi ile buraya kadar gelebildim ilk olarak tek userform yaptım dediğiniz gibi ama ders programı uzun olduğu için sayfadan taştı o yüzden ayırdım zaten en son çözemezsem o şekle geri dönücem
tam olarak az önce bahsettiğiniz
Veya sorgulama yaptığınız öğrencinin bulunduğu satırın tamamını (birinci userform üzerinde görmediğiniz ders notları userformundaki bilgiler dahil) diğer sayfaya satır olarak taşıyabilirsiniz.
Bu işlemi de öğrencinin bulunduğu satır numarasını bulup diğer sayfaya taşıma işlemi yapabilirsiniz.
bu işlemi yapmak istiyorum elle yapmak sorun değil ama bir öğrenci kayıt userforumundaki dönemi bitenlere kaydet dediğim butona tüm satırı taşıtabilirsem çok güzel olucak
 
Sizin şuan kullandığınız kaldırma işlemi nasıl gerçekleşiyor?
Dim sf As Worksheet, bulunan As String, aranan As String
Set sf = Sheets("ÖĞRENCİ-DATA")
son = sf.Cells(Rows.Count, "A").End(3).Row

aranan = TextBox41
For i = 1 To son
bulunan = sf.Cells(i, "A")
If aranan = bulunan Then
soru = MsgBox("Öğrencinin dönemi sonlandırılsın mı?", vbYesNo)
If soru = vbYes Then
sf.Rows(i).Delete
Exit Sub
Else
Exit Sub
End If
End If
Next i
bu silme işlemi için kullandığım kod

Dim emptyRow As Long

'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Sayfa3.Range("A:A")) + 1

stn = Split(datasutun, ",")
obj = Split(datanesne, ",")
'Transfer information
For a = LBound(stn) To UBound(stn)
Sayfa3.Cells(emptyRow, CInt(stn(a))) = Me.Controls(obj(a)).Text
Me.Controls(obj(a)).Text = ""
Next
Me.Tag = ""
MsgBox "Veriler " & emptyRow & " satırına kaydedildi"
bu da dönemi bitenlere kayıt etmek için
 
Dim sf As Worksheet, bulunan As String, aranan As String
Set sf = Sheets("ÖĞRENCİ-DATA")
son = sf.Cells(Rows.Count, "A").End(3).Row

aranan = TextBox41
For i = 1 To son
bulunan = sf.Cells(i, "A")
If aranan = bulunan Then
soru = MsgBox("Öğrencinin dönemi sonlandırılsın mı?", vbYesNo)
If soru = vbYes Then
sf.Rows(i).Delete
Exit Sub
Else
Exit Sub
End If
End If
Next i
bu silme işlemi için kullandığım kod
Kodun yapısından anlıyorum ki kodu ben yazmışım :) ilk işlem olarak bitenlere kayıt et butonunu kullanıyorsunuz, daha sonra silme işlemi yapıyorsunuz sanırım?
 
Aşağdaki kodu inceleyince farkettim; textboxlarınızı tek tek diğer sayfaya taşıyorsunuz. Bu işleme ihtiyacınız yok. satırı tek seferde notlarıyla birlikte alsanız, istediğiniz tek userformdan yapma işlemini de gerçekleştirmiş olacaksınız.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(14 satır)
 
Kayıt sildiğiniz koda biraz ekleme yaparak kayıt kopyalama işlemi yaptırdım. Aşağıdaki kodu deneyin.

BitenSon = biten.Cells(Rows.Count, 1).End(3).Row + 1 Dönem Biten sayfasında kayıt yapacağınız satır numarasını tespit ediyorsunuz.

sf.Rows(i).Copy biten.Rows(BitenSon) Aradığınız isimle eşleşen öğrencinin (i) kaydını kopyalayıp, biten sayfasındaki önceden belirlediğiniz satıra yapıştırıyorsunuz.

Buton kodunun tamamı.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(18 satır)
 
Kayıt sildiğiniz koda biraz ekleme yaparak kayıt kopyalama işlemi yaptırdım. Aşağıdaki kodu deneyin.

BitenSon = biten.Cells(Rows.Count, 1).End(3).Row + 1 Dönem Biten sayfasında kayıt yapacağınız satır numarasını tespit ediyorsunuz.

sf.Rows(i).Copy biten.Rows(BitenSon) Aradığınız isimle eşleşen öğrencinin (i) kaydını kopyalayıp, biten sayfasındaki önceden belirlediğiniz satıra yapıştırıyorsunuz.

Buton kodunun tamamı.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(18 satır)
Hocam elinize emeğinize sağlık tam olarak istediğim gibi olmuş önceden kullanmış olduğum kodlarınız için de teşekkür ederim
küçük bir ayrıntı var sadece olmazsa da sorun değil fakat dönemi bitenlerde tablo var boş hücreyi bulurken tabloyu komple atlıyor ve tablonun bittiği hücreyi buluyor tablonun içine kayıt etmesi mümkün mü acaba
 
For i = 1 To son Birde döngülerinizi satır başlangıç sayısına göre güncelleyin. Kayıtlarınız 4 ten başladığı için For döngüsü de 4 ten başlamalı.
 
Tablonuzun sonunda bir adet boş tablo satırı bulunması gerekiyor. Kodun satır kopyalama işleminde tablo genişlemediği için biten.Rows(BitenSon).Insert shift:=xlDown kodu ile tabloyu genişletmem gerekti.
Kod:
İndirmek için giriş yapmanız gerekmektedir.
(27 satır)
 
Çözüm
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt