Soru Mevcut koddaki sorun

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Aşağıdaki gibi bir kod oluşturmaya çalıştım. Kod hatalı çünkü iki kitap açıkken ve değişiklik yapılmamışken UserForm2'ye geçiyor. Başka hataları da olabilir.
Yeniden düzenleme konusunda yardımlarınızı rica ediyorum.


gggg.png
Kod:
Private Sub CommandButton4_Click()
        Unload UserForm1
        If ThisWorkbook.Saved And Application.Workbooks.Count = 1 Then
        Application.Quit
    End If
        If ThisWorkbook.Saved And Application.Workbooks.Count > 1 Then
        Application. ActiveWorkbook.Close
    Else
        UserForm2.Show 0
    End If
End Sub
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Merhaba
Aşağıdaki gibi denermisiniz?
Kod:
Private Sub CommandButton4_Click()
    Unload UserForm1
If ThisWorkbook.Saved Then
If Application.Workbooks.Count = 1 Then Application.Quit
ThisWorkbook.Close
Else
UserForm2.Show 0
End If
End Sub
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Sayın PLİNT,
Yine 2 çalışma kitabı açıkken kodun yazıldığı kitapta değişiklik yapılmadığı hâlde UserForm2'ye geçti.
Application.Workbooks.Count > 1 Then şartı da var kodda.
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
İlgili dosyada formül mü var acaba

"MsgBox ThisWorkbook.Saved" ekleyerek durumu öğrenebilirsiniz

Kod:
Private Sub CommandButton4_Click()

MsgBox ThisWorkbook.Saved

    Unload UserForm1
 If Application.Workbooks.Count = 1 Then
 If ThisWorkbook.Saved Then Application.Quit
Else
 If ThisWorkbook.Saved Then ThisWorkbook.Close
End If
If ThisWorkbook.Saved = False Then UserForm2.Show 0
End Sub
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
False yazısı çıkıyor.
Dosyada formül yok.
Bu false değişim olmuş anlamında mı?
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
(MsgBox ThisWorkbook.Saved)
"false" mesajı dosyada değişilik olmuş demek
Açılışta bir işlem yapan kod varsa sonuna

'..
thisworkbook.save
end sub

ekleyebilirsiniz
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Evet sorun açılış kodlarında olabilir.
Yalnız kaydı dosyadan çıkarken yapıyorum.

Kod:
Private Sub Workbook_Open()
UserForm1.Show 0
If Workbooks.Count = 1 Then
Application.Visible = False
Else
dosya = ThisWorkbook.Name
Application.Windows(dosya).Visible = False
Application.WindowState = xlMinimized
End If
End Sub
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Eklediğiniz kodlardan değil

Private Sub UserForm_Initialize() veya "activate" altında varmı?
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Dosyayı ekledim.
 

Ekli dosyalar

Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Evet dosyayı gizleyen bölümü değişiklik olarak algılıyor
"thisworkbook.saved =true"
ekleyip deneyin


Kod:
Private Sub Workbook_Open()

UserForm1.Show 0

If Workbooks.Count = 1 Then

Application.Visible = False

Else

dosya = ThisWorkbook.Name

Application.Windows(dosya).Visible = False

Application.WindowState = xlMinimized

End If

thisworkbook.saved =true

End Sub
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Butondaki bölüme ek

Kod:
  Private Sub CommandButton4_Click()
        Unload UserForm1
        dosya = ThisWorkbook.Name
        m = 0
        '-----------------
If ThisWorkbook.Saved = False Then m = 1
'-----------------'
    Application.Windows(dosya).Visible = True 'Bu çalışma kitabını göster.
    '----------------'
If m <> 1 Then ThisWorkbook.Saved = True
'--------------'
 If Application.Workbooks.Count = 1 Then
 If ThisWorkbook.Saved Then Application.Quit
Else
 If ThisWorkbook.Saved Then ThisWorkbook.Close
End If
If ThisWorkbook.Saved = False Then UserForm2.Show 0
End Sub
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Sayın PLİNT,
Teşekkürler kodlar için.
Bilgisayarda sadece bu dosya açıksa hiçbir sorun yok.
Önceden başka bir Excel dosyası açılmış sonradan bu açılınca:
1. Geç açılıyor(En az 5 saniye). Daha önceden de böyleydi.
2. Son verdiğiniz koddan sonra iki Excel açık olsa da herhangi bir şey yapmadan kapatınca sorunsuz. Yani değişiklik algılamıyor. Değişim yapmaksızın Sayfa1'e veya Sayfa2'ye geçip tekrar UserForm'a dönüp kapatınca değişiklik algılıyor.

Son kodunuzda geçen m=0 ve m=1 var. Bunların ne olduğunu bilmiyorum. Bilgilendirme yapabilir misiniz?
 
Katılım
31 Aralık 2014
Mesajlar
1,845
Excel Vers. ve Dili
Excel 2010
Merhaba
Geç açılması form kod sayfasında bulunan ("hWnd = FindWindowA("Thunder............" ) form kodlarından olabilir
Butonla sayfa geçişlerinde yukarıda bahsettiğim gibi ("Application.Windows(dosya).Visible = True") gizli dosyanın görünmesini işlem yapılmış gibi algılıyor
"m" tanımı için ek dosyada bulunan kodlar içine açıklama eklemeye çalıştım
https://we.tl/t-CDQXpZuYvZ
 

klop01

Altın Üye
Katılım
19 Aralık 2016
Mesajlar
659
Excel Vers. ve Dili
2021 Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
07-02-2028
Sayın PLİNT,
Zaman harcayarak ayrıntılı açıklamalar yapmışsınız. Sağ olun.
Dosyayı foruma yükleyeyim.
 

Ekli dosyalar

Üst