Sayfa varsa sil

Katılım
28 Kasım 2008
Mesajlar
191
Excel Vers. ve Dili
excel 2003
excel 2010
Merhaba,

Açtığım excel dosyasında "DENEME" isimli bir sayfa varsa silmek istiyorum. Daha önce yapabiliyordum ama hata alıyorum. Sayfa yoksa sorun olmuyor ama "DENEME" sayfası olduğunda hata veriyor. Makroyu çalıştırdığımda "Run time error '9': Subscript out of range" hatası alıyorum. Makroyu durduğumda ise "DENEME" sayfasını siliyor. Konu hakkında yardımlarınız rica olunur. Makronun içeriği aşağıdaki gibidir.

Teşekkürler.


For i = 1 To Worksheets.Count
If Sheets(i).Name = "DENEME" Then
Application.DisplayAlerts = False
Sheets("DENEME").Delete
End If
Next i
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Döngüyü tersten başlatmanız gerekir.

For i = Worksheets.Count To 1 Step -1

.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,376
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba.

Alternatif olsun. Bir fonksiyon tanımlayarak tüm dosyalarınızda rahatça kullanabilirsiniz.

Kod:
Sub Test()

    Dim Syf As String
    
    Syf = "DENEME"
    
    Application.DisplayAlerts = False
    If SayfaVarYok(Syf) = True Then Sheets(Syf).Delete
    Application.DisplayAlerts = True
    
End Sub
Kod:
Function SayfaVarYok(SyfAdi As String) As Boolean
    On Error Resume Next
    SayfaVarYok = CBool(Len(Worksheets(SyfAdi).Name) > 0)
    
End Function
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,333
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Başka alternatifler;

Bu kontrol ederek silmek için.
C++:
Option Explicit

Sub Sayfa_Sil()
    Dim Sayfa As Worksheet
    
    On Error Resume Next
    Set Sayfa = Nothing
    Set Sayfa = Sheets("DENEME")
    On Error GoTo 0
    
    Application.DisplayAlerts = False
    If Not Sayfa Is Nothing Then Sayfa.Delete
    Application.DisplayAlerts = True
End Sub

Bu var mı, yok mu bakmadan silmek için. Varsa siler. Yoksa hata vermez.
C++:
Option Explicit

Sub Sayfa_Sil()
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("DENEME").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0
End Sub
 
Üst