Soru UserFormu Sol Üstteki X'den Kapama

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Giriş user formumu soldaki X'den kapatınca Giriş userformunun kapatılarak Kilit_Ekranı user formunun devreye girmesi için bir kod yazdım.
Kod:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then Cancel = True
Unload Me
Kilit_Ekranı.Show
End Sub
Ama kod çalışınca Giriş userformu Unload Me yani kapanmadan Kilit_Ekranı userformu devreye giriyor .Ama ben kapanmasını istiyorum.

Kilit_Ekranı userformunda doğru şifreyi girince Kilit_Ekranı userformunun kapanarak Giriş userformuna dönmesini istiyorum. Ama Giriş.Show kısmını göstererek hata veriyor.
Kod:
Private Sub CommandButton1_Click()
If TextBox1.Text = "1" Then
Unload Me
  'Application.Visible = True
Giriş.Show
Else
MsgBox " Gecersiz sifre!", vbCritical, " Mahmut YILDIZ "
TextBox1.Text = ""
TextBox1.SetFocus

End If
End Sub
Yardım edebilecek olan var mı
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,364
Excel Vers. ve Dili
2019 Türkçe
Unload Me
yerine
me.hide yazın.

Yani kapatmak yerine gizleyin

Kodları sırası ile okursanız formu kapatmak ve kapattıktan sonra var olan kodların çalışmaya devam etmesini istiyorsunuz. Bu mümkün değil.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Unload Me
yerine
me.hide yazın.

Yani kapatmak yerine gizleyin

Kodları sırası ile okursanız formu kapatmak ve kapattıktan sonra var olan kodların çalışmaya devam etmesini istiyorsunuz. Bu mümkün değil.
Tamam kapat x işaretinin yerine
Me.hide yazdım ve
Sayfa gizlendi kilit_ekranı userform devreye girdi buraya kadar tamam
Kod:
Private Sub CommandButton1_Click()
If TextBox1.Text = "1" Then
Unload Me
  'Application.Visible = True
Giriş.Show
Else
MsgBox " Gecersiz sifre!", vbCritical, " Mahmut YILDIZ "
TextBox1.Text = ""
TextBox1.SetFocus

End If
End Sub
peki bu kodlarda Nas il bir güncelleme yapmalıyım ki doğru şifre girilince me.hide olan userform tekrar ekranda görünsün
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Burda doğru şifre girilince
Giriş.Show yazıyor ama
Doğru şifre girilince me.hide olan sayfa ekrana gelsin istiyorum
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,364
Excel Vers. ve Dili
2019 Türkçe
Burada da unload Me yerine me.hide yazarsanız sorun çözülür.
Unload me den sonra form kapanır-ölür formu öldürdükten sonra canlanıp bir şeyler yapmasını istiyorsunuz hata buradan kaynaklanıyor.
Formu öldürmeyin gizleyin.

Yani aynı şey bu kodlar için de geçerli.
Unload me yerine me.hide yazın.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Burada da unload Me yerine me.hide yazarsanız sorun çözülür.
Unload me den sonra form kapanır-ölür formu öldürdükten sonra canlanıp bir şeyler yapmasını istiyorsunuz hata buradan kaynaklanıyor.
Formu öldürmeyin gizleyin.

Yani aynı şey bu kodlar için de geçerli.
Unload me yerine me.hide yazın.
Kod:
Private Sub CommandButton1_Click()
If TextBox1.Text = "1" Then
Me.Hide
  'Application.Visible = True
daha önce me.hide olan sayfa  yani me.Hide olup da bu kodu calistiran userform ekrana gelsin  istiyorum
Else
MsgBox " Gecersiz sifre!", vbCritical, " Mahmut YILDIZ "
TextBox1.Text = ""
TextBox1.SetFocus

End If
End Sub
daha önce me.hide olan sayfa yani me.Hide olup da bu kodu calistiran userform ekrana gelsin istiyorum.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,364
Excel Vers. ve Dili
2019 Türkçe
me.hide ile gizlediğiniz formu FormAdı.show ile yeniden görünür hale getirebilirsiniz.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
me.hide ile gizlediğiniz formu FormAdı.show ile yeniden görünür hale getirebilirsiniz.
Onu biliyorum da örnek versem daha iyi olacak
Misal
1 Giriş sayfasında
Me hide yaptım kilit ekranı userformu geldi doğru şifreyi girince giriş userformu açılacak

2. Tablo userformunu
ME hide yaptigimda da kilit userformu gelecek
Doğru şifreyi gelince bu sefer tablo userformu ekrana gelecek.

Yanı kilit userformu 'na doğru şifreyi her girdiğimde kendisini çağıran ve me.hide olan sayfayı aktif ekrana getirip kendi kaybolacak.

Her form için bu işlem devam edip gidecek
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Aşağıdaki kodlarla userformda captionda sadece X çarpı işaretini gizlemek istiyorum ama kodlarda revize gerekiyor sanırım . Yardım edebilecek varsa sevinirim. Aşağıda bu konu ile ilgili iki ayrı kod paylaşıyorum. Revize edemedim ben

Kod:
Private Const GWL_STYLE = -16
Private Const WS_CAPTION = &HC00000
Private Const WS_SYSMENU = &H80000

#If VBA7 Then

    Private Declare PtrSafe Function GetWindowLong _
        Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, _
        ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function SetWindowLong _
        Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
        ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare PtrSafe Function FindWindowA _
        Lib "user32" (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
    Private Declare PtrSafe Function DrawMenuBar _
        Lib "user32" (ByVal hWnd As Long) As Long
       
#Else

    Private Declare Function GetWindowLong _
        Lib "user32" Alias "GetWindowLongA" ( _
        ByVal hWnd As Long, ByVal nIndex As Long) 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 FindWindowA _
        Lib "user32" (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
    Private Declare Function DrawMenuBar _
        Lib "user32" (ByVal hWnd As Long) As Long

#End If
'Include this code in the same module as the API calls above



Public Sub XGizle(frm As Object, show As Boolean)
Dim windowStyle As Long
Dim windowHandle As Long

windowHandle = FindWindowA(vbNullString, frm.Caption)
windowStyle = GetWindowLong(windowHandle, GWL_STYLE)

If show = False Then

    SetWindowLong windowHandle, GWL_STYLE, (windowStyle And Not WS_SYSMENU)

Else

    SetWindowLong windowHandle, GWL_STYLE, (windowStyle + WS_SYSMENU)

End If

DrawMenuBar (windowHandle)

End Sub

Bir de şu kodlar var

Kod:
Const sat1 = ""
Const sat2 = ""
Const kap1 = False
Const kap2 = False


#If Win64 Then

#Else

#End If


#If VBA7 Then
Private Declare PtrSafe Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#Else
Private Declare Function GetWindowLongA Lib "USER32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "USER32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "USER32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

For k = 1 To MultiPage1.Pages.Count - 1
'MultiPage1.Pages.Item(MultiPage1.Pages(k).Caption).Enabled = False
'MsgBox MultiPage1.Pages(k).Caption
MultiPage1.Pages(k).Enabled = False

Next k
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
 

Ekli dosyalar

Üst