Userform kapatma işlemi

Katılım
14 Aralık 2004
Mesajlar
170
Excel Vers. ve Dili
2000-TR
Herkese merhaba,
excel' de bir vizite kağıdı hazırladım. Sayfayı açtığımda direkt olarak userform devreye giriyor.

sub auto_open()
application.visible=false
userform1.show
end sub

userform daki alanları (textbox ları) vizite kağıdındaki hücrelerle ilişkilendirdim. Ã?rneğin kişinin sicil no sunu girdiğimde [a1] hücresine girilen değer aktarılıyor.

Sormak istediğim; userform u kapattığımda excel de kapanıyor. Fakat dosyayı tekrar çağırdığımda "sayfa zaten açık" gibi bir mesajla karşılaşıyorum. Anladığım kadarıyla excel yada sayfa kapanmamış. Ne gibi bir işlem yapmam gerekiyor.
Teşekkürler...
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Userform kapandığında excel'inde kapanmasını mı istiyorsunuz, yoksa userform kapandığında excel'in görünmesini mi?
 
Katılım
14 Aralık 2004
Mesajlar
170
Excel Vers. ve Dili
2000-TR
Excel in ve userform un aynı anda kapanmasını istiyorum. Unutmadan vizite kağıdına texbox tan bilgi aktardığım için excel dosyayı kaydedip kaydetmeyeceğimi de soracak, sormasını yani kaydetmesini istemiyorum.
 
Katılım
14 Aralık 2004
Mesajlar
170
Excel Vers. ve Dili
2000-TR
sayın mraltin, Thisworkbook.close 'yi

sub auto_close()
Thisworkbook.close
end sub

şeklinde ekledim ama bir sonuç vermedi

excel, vizite kağıdını tekrar çalıştırmak istediğimde "vizitekagidi.xls zaten açık. Yaptığınız değişiklikleri yok sayacak, Vizite.xls yeniden açılsın mı ?" diye mesaj ekrana getiriyor. (userform u [X] dan kapatıyorum.)
 

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
Aşağıdaki şekilde deneyin.

[vb:1:140a47b82d]sub auto_close()
unload me
application.quit
end sub[/vb:1:140a47b82d]
 
Katılım
24 Mayıs 2005
Mesajlar
462
Excel Vers. ve Dili
Excel 2003 Türkçe
Bir alternatifde benden, aşağıdaki kodu çıkış bütonuna kopyalayın. Kolay gelsin.

Private Sub CommandButton19_Click()
Dim Cevap As VbMsgBoxResult
Cevap = MsgBox("PROÐRAMIN KAPATILMASINI İSTİYOR MUSUNUZ.?", _
vbOKOnly + vbYesNo, "MESAJ")
If Cevap = vbYes Then
ActiveWorkbook.Save
Excel.Application.Quit
End If
End Sub
 
Katılım
14 Aralık 2004
Mesajlar
170
Excel Vers. ve Dili
2000-TR
yardımcı olan arkadaşlara teşekkür ederim, sorun çözüldü gibi, küçük bir sorun kaldı, o da excel in bana çıkışta sayfayı kaydedip kaydetmeyeceğimi sorması. bu soruyu excel e sorduramayabilir miyiz ?
yani save olayını iptal ettirebilir miyiz? Sormadan çıksın...
 

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
aşağıdaki kodu auto_close içine yazmanız yeterlidir.

activeworkbook.save
 
Katılım
14 Aralık 2004
Mesajlar
170
Excel Vers. ve Dili
2000-TR
sn leventm, activeworkbook.save işlemi aktif sayfayı kaydediyor, kaydetmeden çıkmak istiyorum, mümkün müdür? teşekkürler...
 

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
Aşağıdaki kodu yine auto_close içine yazarsanız kaydetmeden kapatırsınız.

Application.DisplayAlerts = False
 
Katılım
29 Nisan 2007
Mesajlar
81
Excel Vers. ve Dili
2003 Türkçe
Aşağıdaki şekilde deneyin.

[vb:1:140a47b82d]sub auto_close()
unload me
application.quit
end sub[/vb:1:140a47b82d]
carpıya tıkladıgım zaman userform1 e gecmesini saglamak istiyorum ve

sub auto_close()
Unload Me
UserForm1.Show
End Sub

yazıyorum ama carpıya basmak autoclose u calıstırmıyor sadece goruntuyu kapatıyor

carpı basınca yapılması gerekenlere nasıl mudahale edebilirim
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Aşağıdaki örnek kodu sayfanın ThisWorkbook bölümüne yapıştırarak deneyiniz.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = True
MsgBox "Formdan Kapatma İşlemini Yapınız"
UserForm1.Show 0
End Sub
 
Katılım
29 Nisan 2007
Mesajlar
81
Excel Vers. ve Dili
2003 Türkçe
carpıya basmakla demek istedigimi tam anlatamamıs olabilirim.

userform2 deyim mesela ve userform2 nin ustundeki carpıya basınca userform 2 yi unload edip userform3e gecmesini istiyorum mesela. Ya da diger userformlar icin de gecerli bu. ama userformların ustundeki carpıya basmak onların sadece goruntusunu yokediyor unload bile etmiyor userformun zamana dayalı bir kodu varsa o calısmaya devam ediyor

YApmak istedigim aslında userformlar userinde calısırken ustteki carpıya basarak onları unload edip sıradakine gecmeyi saglamak. ya da programı kapatmak istiyor musunuz diye msgbox verip dosyayı da kapattırabilirim
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Soruyu yarım anladığımın farkındaydım. Belirtmeyi düşündüm amaa, neyse. Bu sefer tam anladığımı farzederek küçük, örnek bir dosyayı sizlere sunuyoruz. İnşaallah bu sefer tamam olacak. Dosyayı inceleyiniz.
 
Katılım
29 Nisan 2007
Mesajlar
81
Excel Vers. ve Dili
2003 Türkçe
evet budur.. cok tesekkur ederim...

ama aslında benim baska bir sorunum varmıs.

bu kapatmaların hicbiri progressbara baglı calısan kodu yarıda kesip userformu kapatmıyor.yani userform2 ye geciyor ama kendisi hala arkada calısıyor
 
Son düzenleme:
Katılım
29 Nisan 2007
Mesajlar
81
Excel Vers. ve Dili
2003 Türkçe
sayın seyit tiken

ornekte yazdıgınız kodda userform2.show 0 olarak verildiginde userforma non-modal olarak geciyor kodu userform2.show 1 yaptıgımızda ise arkada userform1 goruntusu kapanmıyor.

bu sorunu cozmek icin koda userform1.hide mı eklemek gerekir. O zamanda kod sadece birkez calısıyor.
yani userform1den 2 ye geciyor 2den bire geciyor ama tekrar 1 den 2 ye gecmiyor

ekte calıstıgım dosyayı ekledim ..butun userformları non-modal ayarlayıp oyle cagırdım ama carpıya basınca calısan kodlar unload durumunda her zaman devreye giriyor. mesela userform1 den ileri gidince userform3 gelmeli geri gidince userform2 gelmeli.carpıya basınca da userform3 gelsin. (ya da programı kapatmak istiyor musunuz diye sorsun ).ama geriye tıklayınca userform kapandıgı icin carpıya yazdıgımız kodda calısıyor ve hem userform2 hem userform3 cıkıyor. (ya da programı kapatmaya yonlendirmis olsak da programı kapatayım mı diye soruyor). Program arkada excel goruntusu olmadan calıstıgı icin de carpıya bir kod yazmazsam ortada hicbisi kalmıyor.

Geri koduna unload userform3 dersem de userform3 bi gorunup oyle kapanıyor. Daha basarılı bi yontemi var mı bu sorunu yoketmenin?
 
Son düzenleme:

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Yaptığınız çalışmaya baktım. 8 adet form kullanmışsınız. Bayağı bir kod boluğu mevcut. Benim anlamadığım kadarıyla, niye çarpıdan formdan forma geçiş yapmak istiyorsunuz? Zaten formların sağ alt kısmında "ileri-geri" buton(lar) koymuşsunuz. Benim tavsiyem, önemli öncellikli eylem kodlarını uygulamanızdır. Fazla işlevler(eğer o derece önemi yoksa) programı ağırlaştırır ve sorunların oluşmasına sebebiyet verir(örnek olarak çalışan saat). Benim sunucağım çözüm, formların çarpıdan kapanmasını engelemek. İlgili kod aşağıdadır.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = 1
End Sub
 
Katılım
29 Nisan 2007
Mesajlar
81
Excel Vers. ve Dili
2003 Türkçe
evet ama bu aynı zamana unload me komutuna da mudahale ettigi icin bu kodu kullanırsam gecislerde eski userformun kapanmadan digerinin acılması demek oluyor
yani sadece carpıdan kapanmayı deil unload me deyince de kapanmayı engellemis oluyor..
 
S

Skorpiyon

Misafir
Sayın nkumas,

Şahsen konuyu tam anlamış değilim ama, illaki formun köşesindeki çarpıdan geçiş yapacağım diyorsanız, formlarınızın QueryClose bölümlerine,

Userform1.Hide 'Aktif formun gizlenmesi
Userform2.Show 'Açılması istenilen formun görüntülenmesi

yazdığınızda işinizi görmüyor mu ?

Saygılarımla...
 
Üst