Userformu ESC Tuşu İle Kapatmak

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,

Userform'u ESC tuşu ile kapamayı beceremedim. Yardımcı olabilir misiniz?

İyi çalışmalar.
 

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,680
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Selam,

Userform'u ESC tuşu ile kapamayı beceremedim. Yardımcı olabilir misiniz?

İyi çalışmalar.
Merhaba kullandığım bir kod umarım işinize yarar
Kod:
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 27 Then Unload Me
End Sub
 
İ

İhsan Tank

Misafir
Selam,

Userform'u ESC tuşu ile kapamayı beceremedim. Yardımcı olabilir misiniz?

İyi çalışmalar.
merhaba
userform'un kod bölümüne
Kod:
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
CommandButton1.Cancel = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then Cancel = True
End Sub
bu kod'u yapıştırınız.
 

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,680
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba İhsan bey
Siz mesajdan isteğinizi kaldırmışsınız ama ben yinede örnek dosyamı ekleyeyim.
 

Ekli dosyalar

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Merhaba kullandığım bir kod umarım işinize yarar
Kod:
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 27 Then Unload Me
End Sub
Selam,
Çok teşekkür ederim. Çok işimi yaradı. Çok sağolun.
İyi çalışmalar.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
merhaba
userform'un kod bölümüne
Kod:
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
CommandButton1.Cancel = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then Cancel = True
End Sub
bu kod'u yapıştırınız.
Selam,
Çok teşekkür ederim. Ancak, Userformda CommandButton1 yok ise bir işe yaramıyor.
İyi çalışmalar.
 
İ

İhsan Tank

Misafir
Selam,
Çok teşekkür ederim. Ancak, Userformda CommandButton1 yok ise bir işe yaramıyor.
İyi çalışmalar.
rica ederim
doğrudur çalışmaz ama gelişebilir. birde ben userform'un içini boş olacağını tahmin etmedim. ondan kaynaklandı sanırım
kolay gelsin :mutlu:
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
rica ederim
doğrudur çalışmaz ama gelişebilir. birde ben userform'un içini boş olacağını tahmin etmedim. ondan kaynaklandı sanırım
kolay gelsin :mutlu:
Selam,
Alternatif her çözüme açığımdır. Şu an işe yaramıyor görünse bile, bazı durumlarda sizin önerdiğiniz gibi dolaylı kodlar çok işe yarıyor.
Mesela cancel olayınından biraz bahsederseniz, takip eden arkadaşalr için de faydalı olur kanaatindeyim.

İyi çalışmalar.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,

aşağıdaki kod ile Userformu kapatamıyorum. Boş Userformu kapatıyor. Ancak çalıştığım userform'u kapatamıyorum. Kodlar neden çalışmıyor?

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then Unload Me
End Sub
 
S

Skorpiyon

Misafir
Sayın Ergün_Güler,

Userformunuzun QueryClose kodlarında,
Cancel = 1 veya Cancel = True yazıyorsa ESC tuşu işe yaramayacaktır.

Cancel, userformun köşesindeki çarpıdan çıkışı engellemek için kullanılır genelde.
Farklı kullanımları da mevcuttur tabi ki. Örneğin;

Textbox'lara sadece RAKAM girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsNumeric(TextBox1) Then
MsgBox "Rakam Girmek Zorunludur.", , " HATALI GİRİŞ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
End Sub

Textbox'a rakam girilmemiş ise imleci aynı Textbox'ta tutmak için kullanılabilir.
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Sayın Ergün_Güler,

Userformunuzun QueryClose kodlarında,
Cancel = 1 veya Cancel = True yazıyorsa ESC tuşu işe yaramayacaktır.

Cancel, userformun köşesindeki çarpıdan çıkışı engellemek için kullanılır genelde.
Farklı kullanımları da mevcuttur tabi ki. Örneğin;

Textbox'lara sadece RAKAM girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsNumeric(TextBox1) Then
MsgBox "Rakam Girmek Zorunludur.", , " HATALI GİRİŞ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
End Sub

Textbox'a rakam girilmemiş ise imleci aynı Textbox'ta tutmak için kullanılabilir.
Selam,
Sayın Hocam öncelikle açıklamalarınız için çok teşekkür ederim. Tam olarak anlayamadım ama,
Kod:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

End Sub
şeklinde herhangi bir kodum bulunmuyor.
boş bir userformda bir önceki mesajımda verdiğim kodlar ile ESC tuşuyla Formu kapatabiliyorum. Combobox, Commandbutton, Listview v.b. nesnelerin olduğu userformu kapatamıyorum. Ne yapmam gerekir tam olarak anlayamadım.
Yeniden yardımcı olabilirseniz çok sevinirim.
İyi çalışmalar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,133
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ergün bey aşağıdaki kod dediğiniz gibi boş bir userformda çalışacaktır. Siz her durumda çalışan bir kod istiyorsunuz. Bu durumda kırmızı bölümü formunuzun üstündeki her nesnenin KEYDOWN olayına yazmalısınız. Bu şekilde yaparsanız form üzerinde o an hagi nesne aktif olursa olsun ESC tuşuna bastığınızda formunuz kapanacaktır.

Kod:
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     [COLOR=red]If KeyCode = 27 Then Unload Me[/COLOR]
End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selamlar,

Ergün bey aşağıdaki kod dediğiniz gibi boş bir userformda çalışacaktır. Siz her durumda çalışan bir kod istiyorsunuz. Bu durumda kırmızı bölümü formunuzun üstündeki her nesnenin KEYDOWN olayına yazmalısınız. Bu şekilde yaparsanız form üzerinde o an hagi nesne aktif olursa olsun ESC tuşuna bastığınızda formunuz kapanacaktır.

Kod:
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     [COLOR=red]If KeyCode = 27 Then Unload Me[/COLOR]
End Sub
Selam Hocam çok teşekkür ederim. Açıklamalarınız çok mantıklı oldu.

Userform üzerindeki Textbox, combobox v.b. tüm nesnelerin KEYDOWN olayına kodları yazmak yerine Class özelliğini kullanarak ortak kod yazılabiliyor sanırım. Ancak ben Class ile henüz nasıl yazılabileceğini bilmiyorum. Bu konuda bana yardımcı olabilir misiniz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,133
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

İhsan beyin önerdiği kodlarıda kullanabilirsiniz.

Formunuza bir adet CommanButton ekleyin. Aşağıdaki kodlarıda formunuzun kod bölümüne uyarlayın. Kırmızı renkli bölümler yeni eklediğiniz butonun index numarısına göre değiştirin. Mesela yeni eklediğiniz butonun adı CommandButton25 ise sizde kırmızı bölümleri 25 olarak değiştirin. Bu durumda ESC tuşuna basarak formu kapatabilirsiniz.

Ekteki örneğide inceleyebilirsiniz. Eklemiş olduğum dosyada CommanButtonu görebilmek için kod editöründen formu seçip genişliğini mouse ile arttırın. Bu şekilde gizlenmiş bir butonla işlemi kolaylıkla yapabilirsiniz.

Kod:
Private Sub CommandButton[COLOR=red]1[/COLOR]_Click()
    Unload Me
End Sub
 
Private Sub UserForm_Initialize()
    CommandButton[COLOR=red]1[/COLOR].Cancel = True
End Sub
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then Cancel = True
End Sub
 

Ekli dosyalar

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selamlar,

İhsan beyin önerdiği kodlarıda kullanabilirsiniz.

Formunuza bir adet CommanButton ekleyin. Aşağıdaki kodlarıda formunuzun kod bölümüne uyarlayın. Kırmızı renkli bölümler yeni eklediğiniz butonun index numarısına göre değiştirin. Mesela yeni eklediğiniz butonun adı CommandButton25 ise sizde kırmızı bölümleri 25 olarak değiştirin. Bu durumda ESC tuşuna basarak formu kapatabilirsiniz.

Ekteki örneğide inceleyebilirsiniz. Eklemiş olduğum dosyada CommanButtonu görebilmek için kod editöründen formu seçip genişliğini mouse ile arttırın. Bu şekilde gizlenmiş bir butonla işlemi kolaylıkla yapabilirsiniz.

Kod:
Private Sub CommandButton[COLOR=red]1[/COLOR]_Click()
    Unload Me
End Sub
 
Private Sub UserForm_Initialize()
    CommandButton[COLOR=red]1[/COLOR].Cancel = True
End Sub
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then Cancel = True
End Sub
Hocam Size ve İhsan Bey'e çok teşekkür ederim. Ancak kodlar nasıl çalışıyor pek anlayamadım. Birde Userform sağ-köşe^den neden kapatılamadı?

İyi çalışmalar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,133
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selamlar,

İlk olarak formunuzu köşedeki çarpıdan kapatmak için aşağıdaki kodu silmelisiniz.

Kod:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then Cancel = True
End Sub
Ayrıca ESC tuşu ile formu kapatmak için aşağıdaki başlıklarıda inceleyebilirsiniz.

Userformun ESC tuşu ile kapatılması
Userformdan esc ile çıkabilmeye izin vermek
Userformdan esc ile çıkış kodu ve özelliği
Selam,
Çok teşekkür ederim.
İyi çalışmalar.
 
Üst