2010-08-18 14 views
7

Bir kullanıcı pencerenin sağ üst köşesindeki x düğmesini kullanarak bir formu kapattığında bazı kod çalıştırmak istiyorum (excel elektronik tablosunda form yüküm var) açılır ve Excel'i gizler. Form kapandıktan sonra excel'ten çıkmak veya en azından kullanıcı el ile çıkabilmesi için bir kez daha excel'i göstermek istiyorum)VBA'da (Excel 2007) form kapandığında yürütme kodu

Form özelliklerine bakıldığında, Boşaltma özelliği yok, Ne zaman form kapalı olduğunda yürüten bir işlevi nasıl yapacağını anlayamıyorum.

Maalesef, bunu VB'de kodlamak bir seçenek değil, VBA olmalı.

Excel'i açığa çıkarmak için gereken kodun farkındayım ya da tamamen boşaltma olayından haberdar olmamaya çalışıyorum.

cevap

0

Bir formu kapatmak için VBA'da Unload Me'u kullanabilirsiniz. Hemen bunu hemen sonra Excel'i kapatmak için kodu koyun.

+1

Teşekkür ama bu beni izin vermez nasıl kullanıcı x düğmesini tıkladığında kodu yürütmek mi? Belki de sorumu netleştirmedim, şimdi düzenleyeyim. – Pixotic

+0

Gördüğünüz gibi, ben (yanlış) kullanıcının ekranda bir düğme düğmesi tıklamasıyla çıkacağını varsaydım, pencerede x düğmesine değil. – Michael

0

böyle bir şey deneyin: -

Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _ 
    Handles Form1.FormClosing 

    //Code you want to execute 

End Sub 
+0

_ hatası belirten bir hata attı, _ geçersiz bir karakter. – Pixotic

+0

Kaynak koduna baktığınızda Formunuz için seçebileceğiniz bir FormClosing olayı olmalıdır. İşte bir örnek: http://img385.imageshack.us/img385/3966/wat3am9.jpg – Daniel

+1

UserForm'da (Excel VBA) FormClosing olayı yoktur. – Xdg

10

Bir meslektaşım Sen olarak UserForm QueryClose olayını kullanabilirsiniz

Private Sub userform_terminate() 

    'Code goes here 

End Sub 
+0

Bu, bir formu saklarken de tetiklendiğine dikkat edin. Sağ üst köşedeki sadece kapat düğmesini (x) yakalamak istiyorsanız MRS1367'nin yanıtını kullanın! – OfficialBAMM

9

herkes için buraya dahil örnek cevap verebilmektedir aşağıdaki şekilde olabilir:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = 0 Then 
     ' Your codes 
     ' Tip: If you want to prevent closing UserForm by Close (×) button in the right-top corner of the UserForm, just uncomment the following line: 
     ' Cancel = True 
    End If 
End Sub 

X düğmesini aşağıdaki kullanılarak tıklama iken kapatmasını formunu önlemek başardı

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = vbFormControlMenu Then 
     'Your code goes here 
    End If 
End Sub 
0
Private Sub Form_Unload(Cancel As Integer) 
    Dim msgRes As VbMsgBoxResult 
    msgRes = MsgBox("Exit form ?", vbYesNo) 
    If msgRes = vbYes Then 
     'optional code 
    ElseIf msgRes = vbNo Then 
     Cancel = True 
    End If 
End Sub 
+0

Sorunun bu soruya nasıl cevap verdiğini açık değil. Lütfen asıl sorunun ve sizin özel çözümünüze işaret etmek için bu cevabı açıklayınız. – theMayer

0

: yani bu gibi vbFormControlMenu kullanmak

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Cancel = MsgBox("Please confirm cancellation", vbOKCancel + vbQuestion) = vbCancel 
End Sub