• DİKKAT

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

Sayfa silinirken sayfaya ait makro nasıl korunur?

Katılım
11 Kasım 2004
Mesajlar
80
Excel dosyamın içinde makro barındıran Ana Sayfa adında bir sayfam var. Başka bir mokro ile bu sayfayı sildirip yerine yeni bir sayfa oluşturuyorum ve yeni sayfanın adını tekrar Ana Sayfa yapıyorum.
Bu aşamada sayfaya ait makro da siliniyor. Sayfaya ait makronun silinmesini istemiyorum. Sayfaya ait makroyu nasıl korurum veya silindikten sonra nasıl geri getirebilirim?
 
Merhaba,

Sayfadaki kodları ThisWorkbook sayfasına yazarak sadece Ana Sayfa da çalımasını sağlayabilirsiniz.

Bir örnek.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
      'kodlarınız
End Sub
yerine kodları ThisWorkbook'a yazarak aşağıdaki gibi kullanın.

Kod:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 
    If ActiveSheet.Name <> "Ana Sayfa" Then Exit Sub
 
    'Kodlarınız
 
End Sub
 
Sayın Ömer Bey saklamaya çalıştığım makro aşağıdaki gibidir. Bu makro Ana Sayfada herhangi bir değişiklik yapılınca diğer sayfaları silen bir makro. Ne yazık ki yazdığınızı makroya uygulayamadım. Yardımcı olursanız sevinirim. (Ya da bu makronun işini yapacak başka bir makro da olabilir. Ancak Ana Sayfada devamlı veri girişi/değişikliği yapıldığından her değişiklikte makronun aktif olmaması gerekiyor.)

Bu arada aşağıdaki kodların orjinali Sayın Korhan Ayhan'a aittir.

Kod:
Option Explicit
Dim Sil As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    If Sil = True Then Exit Sub
    On Error Resume Next
    Application.DisplayAlerts = False
    For Each ws In Worksheets
        If ws.Name <> "Ana Sayfa" Then ws.Delete
    Next
    Sil = True
    Application.DisplayAlerts = True
    On Error GoTo 0
End Sub

Private Sub Worksheet_Deactivate()
    Sil = False
End Sub
 
Aşağıdaki kodları Ana Sayfanın kod bölümüne değil, ThisWorbook sayfasının kod bölümüne kopyalayın.

Kod:
Option Explicit
Dim Sil As Boolean
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim ws As Worksheet
     
    If ActiveSheet.Name <> "Ana Sayfa" Then Exit Sub
    
    If Sil = True Then Exit Sub
    On Error Resume Next
    Application.DisplayAlerts = False
    For Each ws In Worksheets
        If ws.Name <> "Ana Sayfa" Then ws.Delete
    Next
    Sil = True
    Application.DisplayAlerts = True
    On Error GoTo 0
    
End Sub
 
Private Sub Workbook_Deactivate()
    If ActiveSheet.Name <> "Ana Sayfa" Then Exit Sub
    Sil = False
End Sub

.
 
Aşağıdaki kodları Ana Sayfanın kod bölümüne değil, ThisWorbook sayfasının kod bölümüne kopyalayın.

Sayın Ömer Bey öncelikle yardımlarınız için teşekkürler.

Mokronuz dosyanın ilk açılışında 1 defaya mahsus çalışıyor. (Ana Sayfada bir değişikllik yapılırsa ve Ana Sayfa dışında başka sayfa varsa, bu diğer sayfalar siliniyor.) Makro 1 defa çalıştıktan sonra, Ana Sayfada değişiklik yapılınca bu arada oluşturulmuş diğer sayfalar silinmiyor. Makrodaki amaç Ana Sayfada bir değişiklik yapıldığında varsa ana sayfa dışındaki sayfaları silmek.

Yardım ederseniz sevinirim.
 
Geri
Üst