• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kaydet kapat sorunu

Katılım
8 Mart 2007
Mesajlar
582
Excel Vers. ve Dili
excel 2000 Türkçe
Merhaba arkadaşlar excel dosyamı kapattığım zaman Liste sayfasına gidiyor. Rapor alıyor verileri kayıt ediyor. Kayıttan sonra kapanması gerekirken dosya içindeki değişklikleri kaydetmek istiyormusun sorusunu soruyor. Kayıt yaptıktan sonra değişiklikleri kaydetmek istiyormusun sorusunu sormadan dosyayı kapatması için aşağıdaki kodlarda değişiklik yaparsanız sevinirim. İyi çalışmalar.




Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.TabRatio = 0.044
Sheets("liste").Select
ActiveSheet.Unprotect "123"
Application.ScreenUpdating = False
Set Sİ = Sheets("liste")
Sİ.[A3:D500].ClearContents
For Z = 2 To Sheets.Count
Sİ.Cells(SAT + 1, 1) = Sheets(Z).[A1].Value
Sİ.Cells(SAT + 1, 2) = Sheets(Z).[I3].Value
Sİ.Cells(SAT + 1, 3) = Sheets(Z).[I4].Value
Sİ.Cells(SAT + 1, 4) = Sheets(Z).[K3].Value
SAT = SAT + 1
Next
Application.ScreenUpdating = True
ActiveSheet.Protect "123"
ThisWorkbook.Save
Application.Quit
End Sub
 
Kodlarınızı aşağıdaki gibi değiştirerek denermisiz?

Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.TabRatio = 0.044
ActiveSheet.Unprotect "123"
Application.ScreenUpdating = False
Set Sİ = Sheets("liste")
Sİ.[A3500].ClearContents
For Z = 2 To Sheets.Count
Sİ.Cells(SAT + 1, 1) = Sheets(Z).[A1].Value
Sİ.Cells(SAT + 1, 2) = Sheets(Z).[I3].Value
Sİ.Cells(SAT + 1, 3) = Sheets(Z).[I4].Value
Sİ.Cells(SAT + 1, 4) = Sheets(Z).[K3].Value
SAT = SAT + 1
Next
Application.ScreenUpdating = True
ActiveSheet.Protect "123"

End Sub

Ekleyeceğiniz modüle
Kod:
Sub auto_close()
ActiveWorkbook.Close Save = False
Application.Quit
End Sub
 
Hocam ThisWorkbook sayfamda aşağıdaki kodlar var. Yazdığınız kod yukarıdaki kod ile çakışıyor.


Private Sub Workbook_SheetActivate(ByVal sh As Object)
ActiveSheet.Unprotect "123"
On Error Resume Next
ActiveSheet.ShowAllData
If ActiveSheet.AutoFilterMode Then ActiveSheet.Range("A1").AutoFilter field:=1
ActiveSheet.Protect "123", AllowFiltering:=True
End Sub
Sub auto_close()
Dim sh As Worksheet
For Each sh In Worksheets
On Error Resume Next
ActiveSheet.ShowAllData
If sh.AutoFilterMode Then sh.Range("A1").AutoFilter field:=1
Next
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.TabRatio = 0.044
Sheets("liste").Select
ActiveSheet.Unprotect "123"
Application.ScreenUpdating = False
Set Sİ = Sheets("liste")
Sİ.[A3:D500].ClearContents
For Z = 2 To Sheets.Count
Sİ.Cells(SAT + 1, 1) = Sheets(Z).[A1].Value
Sİ.Cells(SAT + 1, 2) = Sheets(Z).[I3].Value
Sİ.Cells(SAT + 1, 3) = Sheets(Z).[I4].Value
Sİ.Cells(SAT + 1, 4) = Sheets(Z).[K3].Value
SAT = SAT + 1
Next
Application.ScreenUpdating = True
ActiveSheet.Protect "123"

End Sub
Sub auto_close()
ActiveWorkbook.Close Save = False
Application.Quit
End Sub
 
Merhaba.
Dosyanıza göre:
"Sub auto_close()" makrosu "ThisWorkbook" ve "Modül7" sayfalarında bulunuyor...!
Kodlarınızın hemen, hemen hepsinde hataları görmenizi engelleyen; "On Error Resume Next" var.
 
Çok teşekürler Hocam. Hocam ben kodlardan anlamiyorum. On Error Resume Next kodları silersem oradaki kodlar çalışırmı. Çıkışta dosyayı kayıt yapıyor. Kayıt yaptıktan sonra tekrar soruyor. O da çok önemli değil eğer olmuyorsa kalsın.
 
Aşağıdaki kırmızı renkle belirttiğim eklemeleri yaparak dener misiniz?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.TabRatio = 0.044
Sheets("liste").Select
ActiveSheet.Unprotect "123"
Application.ScreenUpdating = False
Set Sİ = Sheets("liste")
Sİ.[A3500].ClearContents
For Z = 2 To Sheets.Count
Sİ.Cells(SAT + 1, 1) = Sheets(Z).[A1].Value
Sİ.Cells(SAT + 1, 2) = Sheets(Z).[I3].Value
Sİ.Cells(SAT + 1, 3) = Sheets(Z).[I4].Value
Sİ.Cells(SAT + 1, 4) = Sheets(Z).[K3].Value
SAT = SAT + 1
Next
Application.ScreenUpdating = True
ActiveSheet.Protect "123"
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End Sub
 
Hocam kodları ekledim. Dosyayı kapatırken yine değişiklikleri kaydetmek istiyormusun sorusunu soruyor. Hocam benim eklediğim örnek dosyada müşteri sayfalarını ekliyorum. Herhangi bir müşteri sayfasında iken X çıkış işaaretine bastığım zaman Liste sayfasına gidiyor. Rapor alıyor verileri kayıt ediyor. Kayıttan sonra değişiklikleri kaydetmek istiyormusun sorusunu soruyor.
 
Geri
Üst