For x = 1 To Worksheets.Count ile sayfa silme

Katılım
2 Mart 2007
Mesajlar
603
Excel Vers. ve Dili
2003
Makro mu çalıştırmadan önce Belgede iki sayfa hariç diğerlerini silmek istiyorum.

Fakat "Subscript out of range" hatası alıyorum bu hatayı bir türlü gideremedim. Aslında Oruçtan dolayı beynim de yavaş yavaş durdu.

Cevaplar için Teşekkürler

Kod:
ilkedön:
If Worksheets.Count > 2 Then
    For x = 1 To Worksheets.Count
    On Error GoTo ilkedön:
Namem = Worksheets(x).Name
  On Error Resume Next
       If Namem = "FATURA" Then GoTo son:
       If Namem = "LOGIN" Then GoTo son:
       Worksheets(x).Delete
son:
     Next
  End If
 

Necdet

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

For x = 1 To Worksheets.Count

satırını

For x = Worksheets.Count to 1 Step -1

olarak değiştirin.

Çünkü her sildiğinizde Workseets.count aynı kalıyor. Hatayı o yüzden alıyorsunuz
 

Necdet

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

Aşağıdaki kodlar biraz daha kısa.

Kod:
Public Sub SayfaSil()
Application.DisplayAlerts = False
For i = Worksheets.Count To 1 Step -1
    If Sheets(i).Name <> "FATURA" And Sheets(i).Name <> "LOGIN" Then Sheets(i).Delete
Next i
End Sub
 
Katılım
7 Mart 2005
Mesajlar
31
Merhaba,

Belki aynı işi yapıyor ama farklı bir bakış açısı olur diye gönderdim.
Kod:
Sub Sil()
    Dim WSh As Worksheet
    
    Application.DisplayAlerts = False
    
    For Each WSh In Worksheets
        Select Case WSh.Name
            Case "FATURA", "LOGIN"
                
            Case Else
                WSh.Delete
        End Select
    Next
    
    Application.DisplayAlerts = True
End Sub
 
Üst