• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

USERFORM un çok yavaş çalışması ve girilen bilgilerin sürekli gözükmesi

sukruyilmaz1

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
301
Excel Vers. ve Dili
Office 365
Arkadaşlar merhabalar.2 adet sorum olacak.
1) Userformun kayıt butonuna bastığımda bilgisayar çok kasıyor, çok yavaş çalışıyor. başka bilgisayarlarda kitlendiği de oluyor( sistemim 6gb ram i olan i7 işlemcili.) bunu hızlandırmanın bir yolu var mıdır?
2) userforma girdiğim bilgileri kaydedip verileri başka bir excel sheet e atıyorum.fakat userformu tekrar açtığım girdiğim tüm bilgileri sıfırlıyor. ben temizle butonu koyarak mevcut bilgileri silmek istiyorum. ben silmediğim sürece bilgiler sürekli yazılı kalabilir mi?

örnek dosyam 6 mg o yüzden ekleyemiyorum :(

yardımcı olursanız sevinirim..

iyi çalışmalar...
 
Kayıt butonuna basıldığında yapılan işleri görmeden cevap vermek zor.
 
Örnek dosya 6 mg mı ? :D
 
Zeki bey dosyayi nasil yukleyebilirim ? Yuklemeye izin vermiyor forum ;(
 
Üstadlarım dosyayı ekledim.
KULLANICI ADI: BSG
ŞİFRE: 123

Userforma girdiğim bilgiler veri sayfama gidiyor. oradan da başka sayfalara geçiş yaptırıyorum. ilk girişten sonra veri giriş sayfamdaki bilgilerini kaydedince, eğer tekrar veri girişe tıklar isem tüm bilgiler sıfırlandığından excelimdeki diğer tüm bilgiler gidiyor. bunu nasıl engelleriz.

saygılarımla.
 
Sayın sukruyilmaz;
Userformdan sayfaya attığınız veri, şu anki kaydet kodları ile 1 defalık kullanılabilir. Bunun yerine userform'dan veritabanına atmak ve hakediş kontrol listesini de veritabanından düşeyara ya da veri doğrulama yolu ile çekmek , önceki verileri tekrar görmenizi sağlar.

Bunun için;

Herşeyden önce orijinal dosyanızda değil, bir kopya aldığınız dosyada çalışınız.

1- Bir sayfa ekleyiniz ve veritabanı adı veriniz.

2- Hakediş kontrol listesi sayfasında a sütunundaki verileri topluca kopyalayıp veritabanı sayfasında başlık olarak kullanmak üzere ters ( yatay ] çevirerek yapıştırınız.Hücrelerin yönünü değiştirip 90 derece dik açı verin ki kolay okunsun. Ayrıca metni kaydır'ı da işaretleyin.

3- Kaydet butonundaki kodların kayıt kısmını şu kodlarla değiştiriniz

Kod:
Private Sub CommandButton1_Click()
Sheets("veritabanı").Select
'TextBox4 = Format(TextBox4, "dd.mm.yyyy") Bu formatlamayı her tarih texboxu için burda yap
mlastrow = Cells(Rows.Count, "A").End(xlUp).Row
Cells(mlastrow + 1, "A").Activate
Set s1 = Sheets("veritabanı")

' form detayı dataya yazılıyor
X = s1.[a65536].End(3).Row
Cells(X + 1, "a") = TextBox1.Text
Cells(X + 1, "b") = TextBox2.Text
Cells(X + 1, "c") = TextBox3.Text
Cells(X + 1, "d") = TextBox4.Text
Cells(X + 1, "e") = TextBox5.Text
Cells(X + 1, "f") = TextBox6.Text
Cells(X + 1, "g") = TextBox7.Text
Cells(X + 1, "h") = TextBox8.Text
Cells(X + 1, "I") = TextBox9.Text
Cells(X + 1, "j") = TextBox10.Text
Cells(X + 1, "k") = ComboBox1.Text
Cells(X + 1, "l") = ComboBox3.Text
Cells(X + 1, "m") = ComboBox4.Text
Cells(X + 1, "n") = TextBox12.Text
Cells(X + 1, "o") = ComboBox2.Text
Cells(X + 1, "p") = TextBox14.Text
Cells(X + 1, "q") = TextBox15.Text
Cells(X + 1, "r") = TextBox16.Text
Cells(X + 1, "s") = TextBox18.Text
Cells(X + 1, "t") = TextBox19.Text
Cells(X + 1, "u") = TextBox20.Text
Cells(X + 1, "v") = TextBox21.Text
Cells(X + 1, "w") = TextBox22.Text
Cells(X + 1, "x") = TextBox24.Text
Cells(X + 1, "y") = ComboBox7.Text
Cells(X + 1, "z") = ComboBox5.Text
Cells(X + 1, "aa") = TextBox25.Text
Cells(X + 1, "ab") = TextBox26.Text
Cells(X + 1, "ac") = ComboBox6.Text
Cells(X + 1, "ad") = TextBox27.Text
Cells(X + 1, "ae") = TextBox28.Text
Cells(X + 1, "af") = TextBox29.Text
Cells(X + 1, "ag") = TextBox30.Text
Cells(X + 1, "ah") = TextBox31.Text
Cells(X + 1, "AI") = TextBox32.Text
Cells(X + 1, "aj") = TextBox33.Text

4- Diğer textbox ve combobox boş-dolu kontrollerini olduğu gibi bırakınız.

5- Progressbar1 kodlarını her iki userformda şunlarla değiştiriniz :

Kod:
ProgressBar1.Visible = True
Dim i As Integer
  For i = 1 To 1000
    ProgressBar1.Value = (i / 1000) * 100
    Label1000.Caption = Format(Int((i / 1000) * 100), "%0")
    DoEvents
  Next i
  ProgressBar1.Visible = False

6-Thisworkbook.save satırlarını Activeworkbook.save ile değiştiriniz

7-Userformda sonraki kutuya geçme sıra sorunu var ( tab order ), İşin akış mantığını bilmediğimden sıralama hakkında fikrim yok ama, vbe'de VERİ_GİRİŞ formu açıkken sol üstte
menüde View->tab order bulun ve textbox ile combobox sıralamasını olması gereken akışta düzene sokunuz. Kaydet butonunun tab order numarasının, son textbox'a ait tab order numarasından 1 fazla olmasına (yanlış saymadımsa 36 kutu var ) dikkat ediniz ki (kaydet tuşunun tab order numarası 37 bu durumda ) , veri vermeyi tamamladığınızda , klavyede Tab tuşuna bastığınızda direk kaydet tuşuna atlayış olsun.

8-Bilgi ile değil sıra no ile 1,2,3,4 ....36 ya kadar kutulara ve combolara yazarak kaydettirin.

9-Veritabanı sayfasına geçip kutulardan gelen sayıların doğru başlığa düşüp düşmediğini kontrol edin, gerekirse düzeltmeleri yapınız.

Bunlar bittiğinde ( aşırı vakit alacağından kendi işimi de engellerdi ) veri doğrulama ya da düşeyara fonksiyonlarından biri ile VERİTABANI sayfasından VERİ sayfasına istediğiniz veriyi çekiniz . Veritabanı başlıklarını, daha önce veri sayfasında A sütunundan aldığınız için eksik kalan olmayacaktır. Sorgular sabit ancak veriler bu yolla değişken ve öncekiler de yeniden çağrılabilir olur.

Userformlarınız yavaş çalışmıyor. Yavaş çalışan progressbar ve userform bunun işinin bitmesini bekliyordu. Progressbar kodlarını değiştirdiğinizde hızlı dolacak ve geçişe izin verecek.

Kolay gelsin ;)
 
Son düzenleme:
peki üstadım userforma girdiğim bilgileri sürekli görünür kılmanın bir yolu var mıdır? bir de sistemin yavaş çalışması ile alakalı durum sizde de yaşandı mı?
 
Sayın sukruyilmaz ,
Üstadlık gömleğini giyebilmem için buradaki gerçek üstadlara göre 40 fırından 38 fırın ekmek kaldı;) Naciz gördüklerimi izah etmeye çalıştım o kadar .

Bunları bitirdiğinizdeki haliyle, userformda da bilgiyi geri çağıracak ayarlama yaparsak tekrar görüntüleme sorununu çözmüş olacağız. Ancak bunun için benzersiz bir referans kodu ya da ismi olması gerek ve bu referans da ilk textbox ya da comboboxta veriliyor olması gerek, bu referansı userformda ayrı bir combobox ile bul dediğimizde o işe ait kaydınız veritabanından userforma geri gelir.

Sistem yavaş çalışmıyor, herşey normal ; yavaşlatan progressbar kodlarıydı, aktarma o kodların çubuğu doldurup bitirmesini bekliyordu. Onları da önerdiğim şekilde değiştirirseniz hızlanacak ve aktarma daha çabuk gerçekleşecektir.

Bir de tab order konusuna önem veriniz. Doğru textbox yada combobox; yanlış tabana kayıt yapmasın...
 
Son düzenleme:
SAYIN CEMS , 38 fırın ekmek bence sizin için çok çabuk geçecektir :) emeğinize sağlık. dediklerinize bakıp geri dönüş yaparım. elinize sağlık...
 
Sayın sukruyilmaz ;
Programınız da iyi derlenmiş ve hazırlanmış. Eklemek istediğim şu ki , işlev kazandırmak adına userformunuza bul-sil-değiştir tuşları ve fonksiyonlarını da eklerseniz işiniz daha pratik hale gelebilir. Bul-sil-değiştir konusunda forumda arama yapabilirsiniz veya bu işler bittiğinde devam da edebiliriz.
 
Son düzenleme:
Teşekkür ederim cems bey. formu biraz değiştiriyorum şimdi. Sözleşme aşaması-hakediş aşaması ve kabul aşaması diye 3e ayıracağım. sözleşme aşaması ilk seferde girilecek ve tekrardan girilmediğinden diğer sayfalarda değişmeyecek. verilerin sürekli kalması adına böyle yapacağım. bittiğinde sizinle paylaşırım. bul-değiştir-sil içinde dediğiniz gibi forumu araştırırım. teşekkürler. iyi çalışmalar
 
Sözleşme aşaması-hakediş aşaması ve kabul aşaması diye 3e ayıracağım. sözleşme aşaması ilk seferde girilecek ve tekrardan girilmediğinden diğer sayfalarda değişmeyecek. verilerin sürekli kalması adına böyle yapacağım.

Sayın sukruyilmaz ;

Verilerin sürekli kalması , zannımca form kapandığı için mümkün değil . Yapılacak şey sanırım userform açılış kodlarına ( initialize) son satırın verilerini de alıp öyle gel demeyi eklemek gerek . Ama bu sefer de yeni bir iş kaydı için formu boş da isteyeceksiniz.

Her üç aşamayı da aynı veritabanı sayfasına ayrı zamanlarda kaydetmeniz mümkün.
İlk sözleşme aşamasını KAYDET ile kaydedersiniz , bu ilk zemin olur. Daha sonraki zamanda
Bul tuşu ile bu kaydı bulursunuz.
Hakediş aşaması bilgilerini girip DEĞİŞTİR ile ilk kaydın sağından itibaren kaydedersiniz. Daha sonraki bir zamanda
Bul tuşu ile bu iki kaydı bulursunuz.
Kabul aşaması bilgilerini girip DEĞİŞTİR ile ikinci kaydın sağından itibaren kaydedersiniz.

Bu şekilde bir işin veritabanı ayrı zamanlarda ama tek satıra yazılmış olur.

Kafa karıştırır derseniz her 3 bölüme kendine özel KAYDET tuşu koyarsanız aynı sonuca ulaşırsınız. Önce veriyi benzersiz isminden buldurup bilgi ekler ve ait olduğu KAYDET tuşu ile de ilerleyebilirsiniz.

Daha sonraki bir zamanda userformdaki ayrı combobox ile kayıtlardan istediğinizin adını ya da verdiğiniz benzersiz numaralamayı seçip BUL tuşunu kullanarak bütün veriyi görüntüleyebilirsiniz. Görüntüledikten sonra onarmak istediğiniz bilgi varsa yaparak DEĞİŞTİR tuşu ile olduğu yerde onarabilirsiniz.

Bunu gözeterek ilerlerseniz geriye dönüşe sebep olmaz.
 
Son düzenleme:
Geri
Üst