• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Class ile userform Aç ve Kapat

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Refaz

Destek Ekibi
Katılım
11 Ağu 2021
Mesajlar
5,163
Çözümler
655
Aldığı beğeni
5,070
Excel V
Office 2024 TR
Konu Sahibi
Merhaba.
Alttaki kodlarla userformları açtırıp kapatıyorum class ile.
Benim öğrenmek istediğim userform kodlarında On Error Resume Next yazmazsam hata veriyor.Bunun sebebi nedir.
Birde çok fazla userformları aç ve kapat yapınca dosya boyutu neden büyüyor.
Class olmadanda userformlar açtırılıp kapatılıyor ama ondada hata veriyor dediğim gibi.

Class kodlar;
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Modül Kodlar;
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Userform Kodlar;
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Çözüm
Çözümü az önce buldum :)
Dedim birde byval deneyeyim ve sonuç çözüldü.
Yani alttaki gibi oldu kod normal içindi class içinde çalışıyor sadece alttaki gibi byval eklenecek ben normal çalışanı ekledim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Konu Sahibi
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Yukardakini silip alttaki gibi New ile yapınca heralde dosya boyut büyümüyor ama emin olamadım.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Form için class oluşturma ihtiyacı neden doğdu ki? Ayrıca ikinci mesajınızdaki olayı her zaman o şekilde kullanırım, formda dosya boyutunu neden bu kadar etkiledi bilmiyorum fakat incelenmesi gereken bir durum.
 
Bu arada on error resume next satırından sonra bende hata vermiyor. Problemsiz bir şekilde çalışıyor.
Ayrıca dosya boyutunda kullanım sırasında da kullanım sonrasında da herhangi bir değişiklik kaydedilmedi.
 
Konu Sahibi
On error resume bunlar silinince hata veriyor abey en sonda.

Öncedende yazdığım gibi class olmadanda oluyor ama ondada hata veriyor.Class ile yapmak istedim örnek için.Bu ikinci mesajdaki new ile ilk mesajdaki new farkını bir çözemedim.Hafızada yer açıyor diye okumuştumama tam anlamadım.Tabii bazen mecbur set yapmak gerekiyor.
Dosya boyutu için ise örnek 20 defa userformlar kapatılıp açılınca ve excel kaydedilip kapatılınca ve bilgisayrsa sağ tuşla yenile yapınca dosya boyutunda artma oluyor maliesef :(
 
On error resume bunlar silinince hata veriyor abey en sonda.

Öncedende yazdığım gibi class olmadanda oluyor ama ondada hata veriyor.Class ile yapmak istedim örnek için.Bu ikinci mesajdaki new ile ilk mesajdaki new farkını bir çözemedim.Hafızada yer açıyor diye okumuştumama tam anlamadım.Tabii bazen mecbur set yapmak gerekiyor.
Dosya boyutu için ise örnek 20 defa userformlar kapatılıp açılınca ve excel kaydedilip kapatılınca ve bilgisayrsa sağ tuşla yenile yapınca dosya boyutunda artma oluyor maliesef :(
Dosya boyutu ile ilgili bir değişiklik halen olmadı. Söylediğiniz gibi yaptığım halde.

Hafızada yer açma olayı konusundaki bilginiz doğru fakat bu çalışmaya başladığında açılır ve çalışmanın sonunda son bulur.
Yani şöyle;
Dim ile tanımladınız set ettiniz ve içini doldurdunuz bu sırada hafıza kullanır. Fakat kullanım sona erdiğinde bunların hepsi tekrar sıfırlanır. Bu classlar için ufak bir fark teşkil etsede problem yaratacak düzeyde bir şey olması için oldukça fazla değişkenle çalışmak lazım.

Şöyle ki;

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Burada objControl için set edildiğinde hafıza açılır kodlar yürütülürken hafızada kalır set nothing ile son bulur. Set nothing yapmamışsanız end sub ile son bulur.


HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Bu tür bir kullanımda class tanımlanır ve prosedürler içinde set nothing yapana kadar mutlaka çalışır. End Sub'ı görmesi ile sonlanmaz. Set nothing yapmadıysanız hafızada yer tutmaya devam eder. Fakat programı kapattığınız anda bütün değişkenlere yönelik açılan hafıza sıfırlanmak zorundadır.
 
Bütün bunları zaten bildiğinize eminim. Fakat burada farklı bir bug ortaya çıkmış olabilir. Kodların tamamını kopyalayıp farklı bir excel dosyası açıp orada çalıştırmayı denediniz mi? çalıştığınız dosyaya özel bir durum oluşmuş olabilir mi?
 
Konu Sahibi
Bütün bunları zaten bildiğinize eminim. Fakat burada farklı bir bug ortaya çıkmış olabilir. Kodların tamamını kopyalayıp farklı bir excel dosyası açıp orada çalıştırmayı denediniz mi? çalıştığınız dosyaya özel bir durum oluşmuş olabilir mi?
Evet abey biliyordum :)
Sağolun açıklamalar için.
 
Son düzenleme:
Konu Sahibi
Hata zaten f8 ile adım adım çalışıca en sonda veriyordu.
Yani on error yazılmazsada userformların kapatılıp açılmasında sorun olmuyor ama nedense kod tam sonlanınca hata veriyor nothing yapıyor galiba.
 
Konu Sahibi
Abey pekii neden hata veriyor on error lar silinince.
Hata userformlar açılınca en sonda kapatınca oluyor.
 
Konu Sahibi
Property set yapmadan yaptım class ile Kapat2 olanı ondada aynı hata.

Class kodlar;
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Modül Kodlar;
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Alttakinide sadece modül ile yaptım Classssız ondada hata sonu Kapat olan excel.

Modül kod;
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Çözümü az önce buldum :)
Dedim birde byval deneyeyim ve sonuç çözüldü.
Yani alttaki gibi oldu kod normal içindi class içinde çalışıyor sadece alttaki gibi byval eklenecek ben normal çalışanı ekledim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Çözüm
Çözümü az önce buldum :)
Dedim birde byval deneyeyim ve sonuç çözüldü.
Yani alttaki gibi oldu kod normal içindi class içinde çalışıyor sadece alttaki gibi byval eklenecek ben normal çalışanı ekledim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Sizin adınıza çok sevindim. Demekki arada bir hatırlamak lazımmış. Bkz:
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
 
Bu arada VB.NET'te tam da bu konu hakkında denemeler yapıyordum. Orada bu işler çok basit:) Orada istediğimiz nesneyi gruplandırmanın yanında istediğimiz nesnenin istediğimiz olayını bile gruplandırabiliyoruz.

Yani elimizde 5 textbox var diyelim.1, 2, 3 textboxların click eventini gruplarken 2, 3, 4 textboxların doubleclick eventlerını gruplandırabiliyorum. Kısacası her türlü kombinasyonu istediğimiz eventta yapabiliyoruz. Deneme yanılma ile çok şeyler öğreniyorum:)
 
Konu Sahibi
Sizin adınıza çok sevindim. Demekki arada bir hatırlamak lazımmış. Bkz:
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
Sağol abey.Belki başkalarınada yarar zaten byval kullanmayınca default olarak byref oluyor ama hiç aklıma gelmemişti. :(
 
Konu Sahibi
Bu arada VB.NET'te tam da bu konu hakkında denemeler yapıyordum. Orada bu işler çok basit:) Orada istediğimiz nesneyi gruplandırmanın yanında istediğimiz nesnenin istediğimiz olayını bile gruplandırabiliyoruz.

Yani elimizde 5 textbox var diyelim.1, 2, 3 textboxların click eventini gruplarken 2, 3, 4 textboxların doubleclick eventlerını gruplandırabiliyorum. Kısacası her türlü kombinasyonu istediğimiz eventta yapabiliyoruz. Deneme yanılma ile çok şeyler öğreniyorum:)
Bir zamanlar vb.netle bende haşır neşir olmuştum.Ama raporlama olayı gıcık.Crystal report gibi bişeyle önceden kolay yapılıyormuş ama şimdi paralı yapmışlar biliyorum.Diğer türlü raporlama için bir sürü cins kod yazmak gerek.
 
Konu Sahibi
Vb.net zaten kolay abey excele çok benziyor.Bir raporlama birde veritabanı bulundumu en basit sql sorgularıyla yapılır.
Zaten bir sürü videolar var youtubede c# ve.net ile vede ikiside aynı sayılır.
 
Bir zamanlar vb.netle bende haşır neşir olmuştum.Ama raporlama olayı gıcık.Crystal report gibi bişeyle önceden kolay yapılıyormuş ama şimdi paralı yapmışlar biliyorum.Diğer türlü raporlama için bir sürü cins kod yazmak gerek.
Toolbox'ımda reporting sekmesinde 'MicrosoftReportViewer' ve 'CrystalReportViewer' nesnelerini kullanabiliyorum. Ama şimdiye kadar hiç ihtiyacım olmadı. Bütün raporları excel, txt, word, pdf olarak direkt dosyaya attırıyorum. Görüntülemek için de datagridview kullanıyorum.
 
Konu Sahibi
Abey crystal güzeldi incelemiştim ama sap almış biliyorum ve demo yada trial olarak kullanıllıyor galiba.Yada eski visuak studio da crystal olabilir belki bende çıkmıyor biliyorum sınra bir bakayım.
 
Abey crystal güzeldi incelemiştim ama sap almış biliyorum ve demo yada trial olarak kullanıllıyor galiba.Yada eski visuak studio da crystal olabilir belki bende çıkmıyor biliyorum sınra bir bakayım.
Evet bilerek eski versiyonunu kullanıyorum zaten. Visual Studio 2008 yani Visual Basic 9.0 versiyonu hem program arayüzü olarak hem componentler olarak tamamen acemiler için tasarlanmış gibi.

Bedava dağıttıkları 2019 community, 2022 community versiyonlarını indirmeye bile yeltenmedim:)
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst