• DİKKAT

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

Birisi hariç sayfa silme

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,443
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Arkadaşlar, sayın hocalarım, dosyada örneğin Sayfa1 harici tüm sayfaları sil makrosu konusunda yardımcı olabilir misiniz?
Şimdiden teşekkür ederim.
Saygılarımla.
 
Merhaba,
aşağıdaki kod işini çözecektir.


Sub ilkharic ()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Index <> 1 Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub
 
Merhaba,
aşağıdaki kod işini çözecektir.


Sub ilkharic ()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Index <> 1 Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub

Hocam emeğinize sağlık.
Sayfa ismi nereye yazıyoruz. Bilemedim. Mesela "murat" adlı sayfa hariç hepsini sil diyeceğim.
 
Şöyle bir şey işinizi çözecektir

Sub murat()
Dim ws As Worksheet
Dim cevap As VbMsgBoxResult

cevap = MsgBox("Tüm sayfaları silmek üzeresiniz. 'Murat' sayfası hariç. Devam etmek istiyor musunuz?", vbYesNo + vbExclamation, "Onay")

If cevap = vbNo Then Exit Sub

Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Murat" Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub
 
Şöyle bir şey işinizi çözecektir

Sub murat()
Dim ws As Worksheet
Dim cevap As VbMsgBoxResult

cevap = MsgBox("Tüm sayfaları silmek üzeresiniz. 'Murat' sayfası hariç. Devam etmek istiyor musunuz?", vbYesNo + vbExclamation, "Onay")

If cevap = vbNo Then Exit Sub

Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Murat" Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub

Hocam tam bu. Çok teşekkür ederim. Emeğinize sağlık. Çünkü rapor sayfası bazen 2. Sayfa oluyor.
 
Hata yapmanı engellemek için bir kaç kontrol yazdım istersen aşağıdaki kodu kullanabilirsiniz.

Sub Muratkontrol()
Dim ws As Worksheet
Dim muratSayfasiVar As Boolean
Dim silinecekSayfaVar As Boolean
Dim cevap As VbMsgBoxResult

muratSayfasiVar = False
silinecekSayfaVar = False

For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) = "murat" Then
muratSayfasiVar = True
Exit For
End If
Next ws
If Not muratSayfasiVar Then
MsgBox """Murat"" isimli bir sayfa bulunamadı. İşlem iptal edildi.", vbCritical, "Sayfa Bulunamadı"
Exit Sub
End If
For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) <> "murat" Then
silinecekSayfaVar = True
Exit For
End If
Next ws
If Not silinecekSayfaVar Then
MsgBox "Sadece ""Murat"" isimli sayfa mevcut. Silinecek başka sayfa yok.", vbInformation, "Silinecek Sayfa Yok"
Exit Sub
End If
cevap = MsgBox("""Murat"" sayfası hariç tüm sayfalar silinecek. Devam edilsin mi?", vbYesNo + vbExclamation, "Onay")
If cevap = vbNo Then Exit Sub
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) <> "murat" Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True

MsgBox "İşlem tamamlandı. Sadece ""Murat"" sayfası kaldı.", vbInformation, "Tamamlandı"
End Sub
 
Hata yapmanı engellemek için bir kaç kontrol yazdım istersen aşağıdaki kodu kullanabilirsiniz.

Sub Muratkontrol()
Dim ws As Worksheet
Dim muratSayfasiVar As Boolean
Dim silinecekSayfaVar As Boolean
Dim cevap As VbMsgBoxResult

muratSayfasiVar = False
silinecekSayfaVar = False

For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) = "murat" Then
muratSayfasiVar = True
Exit For
End If
Next ws
If Not muratSayfasiVar Then
MsgBox """Murat"" isimli bir sayfa bulunamadı. İşlem iptal edildi.", vbCritical, "Sayfa Bulunamadı"
Exit Sub
End If
For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) <> "murat" Then
silinecekSayfaVar = True
Exit For
End If
Next ws
If Not silinecekSayfaVar Then
MsgBox "Sadece ""Murat"" isimli sayfa mevcut. Silinecek başka sayfa yok.", vbInformation, "Silinecek Sayfa Yok"
Exit Sub
End If
cevap = MsgBox("""Murat"" sayfası hariç tüm sayfalar silinecek. Devam edilsin mi?", vbYesNo + vbExclamation, "Onay")
If cevap = vbNo Then Exit Sub
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) <> "murat" Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True

MsgBox "İşlem tamamlandı. Sadece ""Murat"" sayfası kaldı.", vbInformation, "Tamamlandı"
End Sub

Hocam diğer kodlar normal dosyada çalışıyor. Benim içinde makrolar olan dosyamda çalışmıyor. Nerede hata yapıyorum.
 
Hata yapmanı engellemek için bir kaç kontrol yazdım istersen aşağıdaki kodu kullanabilirsiniz.

Sub Muratkontrol()
Dim ws As Worksheet
Dim muratSayfasiVar As Boolean
Dim silinecekSayfaVar As Boolean
Dim cevap As VbMsgBoxResult

muratSayfasiVar = False
silinecekSayfaVar = False

For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) = "murat" Then
muratSayfasiVar = True
Exit For
End If
Next ws
If Not muratSayfasiVar Then
MsgBox """Murat"" isimli bir sayfa bulunamadı. İşlem iptal edildi.", vbCritical, "Sayfa Bulunamadı"
Exit Sub
End If
For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) <> "murat" Then
silinecekSayfaVar = True
Exit For
End If
Next ws
If Not silinecekSayfaVar Then
MsgBox "Sadece ""Murat"" isimli sayfa mevcut. Silinecek başka sayfa yok.", vbInformation, "Silinecek Sayfa Yok"
Exit Sub
End If
cevap = MsgBox("""Murat"" sayfası hariç tüm sayfalar silinecek. Devam edilsin mi?", vbYesNo + vbExclamation, "Onay")
If cevap = vbNo Then Exit Sub
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If LCase(ws.Name) <> "murat" Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True

MsgBox "İşlem tamamlandı. Sadece ""Murat"" sayfası kaldı.", vbInformation, "Tamamlandı"
End Sub


Ekran görüntüsü 2025-06-20 095347.png


Hocam kodu bu araya yazmayacak mıyım?
 
@catalinastrap hocam, ThisWorkbook ibaresi yerine ActiveWorkbook yazınca sıkıntı gitti.
Teşekkür ederim. Emeğinize sağlık.
 
Kolay gelsin
 
Geri
Üst