Birisi hariç sayfa silme

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,365
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
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.
 

catalinastrap

Özgür
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
633
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
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
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,365
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
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.
 

catalinastrap

Özgür
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
633
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
Şö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
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,365
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
Şö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.
 

catalinastrap

Özgür
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
633
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
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
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,365
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
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.
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,365
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
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?
 

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,365
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Altın Üyelik Bitiş Tarihi
31-01-2026
@catalinastrap hocam, ThisWorkbook ibaresi yerine ActiveWorkbook yazınca sıkıntı gitti.
Teşekkür ederim. Emeğinize sağlık.
 

catalinastrap

Özgür
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
633
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
Kolay gelsin
 
Üst