işlem yapılırken bir mesaj formu gözüksün,işlem bittiğinde kaybolsun!

Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
sn hocalarım. iyi günler.yine engin bilgilerinize ihtiyacım var.

uzun süren bir kayıt işlemim var. kaydı yapmak için bir userform üstündeki commandbutton1 i kullanıyorum.
başka bir arkadaşın böyle bir soru sorduğunu gördüm. yanıtta ise, forma bir label ekleyin ve işleminizin başına label1 = " kayıt yapılıyor", işlem sonuna ,ise label1=""
yazın vardı. ancak benim istediğim işlem başlarken küçük bir form çıksın orada kayıt ile ilgili bilgiler olsun ve işlem bitince de mesaj formu kaybolsun. bunu yapmaktaki amacım işlem devam ederken programa mudahale edilmemesi. eğer bir mesaj formu çıkarsa diğer formlar devre dışı kalacak ve mudahale edilemeyecek.
acaba mümkün olan birşey mi istiyorum?

yardımlarınız için teşekkürler. saygılar.:yardim:
-----------------------------------------------------------------------------
bana bir harf öğretenin KIRK yıl kölesi olurum.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,648
Excel Vers. ve Dili
Pro Plus 2021
Sorunuzu yanlış anlamadıysam aşağıdaki gibi çözebilirsiniz.

Birinci Userformun Kayıt düğmesine aşağıdaki kodları yazın,
Kod:
Private Sub CommandButton1_Click()
    UserForm2.Show
End Sub
İkinci Userforma 1 tane label ekleyin, aşağıdaki userform2 nin kod sahifesine ekleyin,
Kod:
Private Sub UserForm_Activate()
Label1.Caption = "Lütfen Bekleyiniz"
ActiveWorkbook.Save
Unload Me
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bunun için benim aklıma iki yöntem geliyor, birincisi dediğiniz gibi bir userform ile mesaj kutusu oluşturmak, fakat bu durumda işlem yapan kodlarınızı userform2nin activate olayına yazmalısınız, aksi takdirde userform2 açıldığında işlem durur. İkinci yol ise userform üzerindeki tüm nesneleri bir frame nesnesi üzerine yerleştirirsiniz ve ilk satıra frame1.enabled=false, son satırınada frame1.enabled=true satırlarını ilave edersiniz. Böylece işlem yapılırken tüm nesneler kilitlenmiş olur.
 
Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
sn veyselemre ve leventm hocam

userform daki activate olayını denedim ancak activate olayında işlemler bitinceye kadar form üstündeki labelde yazı gözükmüyor. sanırım levetm hocamın dediği gibi bir frame eklemek daha doğru olacak. ilginize çok teşekkürler. saygılar
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
userform daki activate olayını denedim ancak activate olayında işlemler bitinceye kadar form üstündeki labelde yazı gözükmüyor. sanırım levetm hocamın dediği gibi bir frame eklemek daha doğru olacak. ilginize çok teşekkürler. saygılar
Userform activate olayın yazdığınız kodların içine "doevents" satırını ilave edin. Yada userform2 yi açan butondaki kodun ilk satırına, aşağıdaki satırı ilave edin.

userform2.label1="Lütfen bekleyiniz işlem devam etmektedir"
 
Katılım
4 Aralık 2006
Mesajlar
151
Excel Vers. ve Dili
Office 2010 Türkçe
Altın Üyelik Bitiş Tarihi
23.02.2019
Lütfen Bekleyiniz ... uyarısı

Levent Beye,
Burada tekrar teşekkür etmek istiyorum,
DoEvents in nasıl kullanılacağıyla ilgili yazısından, yola çıkarak çok daha farklı bir ugulama ortaya çıktı. Bunu daha önce düşünmüştüm, uğraşmıştım, yapamamıştım, sizlerede sormamıştım,
DoEvents i görünce hemen denedim. oldu.
aşağıdaki örnek uyglamada forumda bulunan diğer arkadaşlarında, farklı kodları örnek alınarak hazırlanmıştır. onlarada teşekkür ediyorum.
 
Katılım
4 Aralık 2006
Mesajlar
151
Excel Vers. ve Dili
Office 2010 Türkçe
Altın Üyelik Bitiş Tarihi
23.02.2019
Pardon arkadaşlar,
aklıma birşey daha takıldı, şu bir üst mesajda bulunan örnek uygulama varya,
kaydet commandı sadece birtek userformda değilde farklı userformlardaysa,
mesela 5 farklı userformumuz var, ve her formdada kaydet düğmesi var.
her kaydete tıkladığımızda, "lütfen_bekleyiniz" formunu çağrabiliyoruz.
ama workbook kayıt edildikten sonra, tekrar ekrana gelecek olan form, en son kullandığımız form olmalı, bunu nasıl yapabiliriz.
teşekkürler.
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
Sayın ybilgin'in yapmış olduğu iletide kullanılan kodlar yerine daha kısa bir kod kullnılabilir. Aşağıdaki gibi.

Kod:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Sub UserForm_Activate()
    Label1 = "Lütfen Bekleyiniz..."
    DoEvents
    ActiveWorkbook.Save
    Unload Me
    UserForm1.Show
End Sub
Private Sub UserForm_Initialize()
    Dim hWnd As Long, stil As Long
    Me.BorderStyle = fmBorderStyleNone
    hWnd = FindWindow("THUNDERDFRAME", Me.Caption)
    stil = GetWindowLong(hWnd, -16)
    stil = stil And Not &H800000
    SetWindowLong hWnd, -16, stil
    DrawMenuBar hWnd
End Sub
 
Katılım
4 Aralık 2006
Mesajlar
151
Excel Vers. ve Dili
Office 2010 Türkçe
Altın Üyelik Bitiş Tarihi
23.02.2019
teşekkürler alpi,
 
Üst