Listbox multiselect ile seçilen sayfaları silme de hata

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

vardar07

Destek Ekibi
Destek Ekibi
Katılım
19 Mart 2008
Mesajlar
2,154
Excel Vers. ve Dili
Office 2007 Enterprise
Türkçe
Merhabalar. Listbox'ta multiselect ile seçilen sayfaları aşağıdaki kod ile silmeye çalışıyorum lakin "If ListBox1.Selected(a) = True Then" satırında hata veriyor. Sebebini bir türlü bulamadım.

Kod:
Private Sub CommandButton5_Click()
For a = Sheets.Count To 1 Step -1
[COLOR="Red"]If ListBox1.Selected(a) = True Then[/COLOR]
If syf.Name <> "menü" And syf.Name <> "Sayfaa" And syf.Name <> "AKTARMA" And syf.Name <> "LİSTE" _
    And syf.Name <> "Sayfa1" Then
    Application.DisplayAlerts = False
Sheets(a).Delete
ListBox1.RemoveItem a
End If
End If
Next
End Sub

Private Sub UserForm_Initialize()
ListBox1.ListStyle = 1
ListBox1.MultiSelect = 1
Dim syf As Worksheet
For Each syf In Worksheets
    If syf.Name <> "menü" And syf.Name <> "Sayfaa" And syf.Name <> "AKTARMA" And syf.Name <> "LİSTE" _
    And syf.Name <> "Sayfa1" Then
      ListBox1.AddItem syf.Name
    End If
Next
End Sub
 

Necdet

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

Deneyiniz.


Kod:
Private Sub CommandButton1_Click()

    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then Sheets(ListBox1.List(i)).Delete
    Next i
    
End Sub
 

vardar07

Destek Ekibi
Destek Ekibi
Katılım
19 Mart 2008
Mesajlar
2,154
Excel Vers. ve Dili
Office 2007 Enterprise
Türkçe
Merhaba, Deneyiniz.

Kod:
Private Sub CommandButton1_Click()
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then Sheets(ListBox1.List(i)).Delete
    Next i    
End Sub
Necdet Bey çok teşekkürler. Lakin listenin en altından silersek sorun yok aradan silersek aynı hatayı veriyor.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kodları bu şekilde denermisiniz.

Kod:
Private Sub CommandButton5_Click()
For a = Sheets.Count To 1 Step -1
If ListBox1.Selected(a - 1) = True Then
sayfa = ListBox1.List(a - 1, 0)
If sayfa = "menü" Or sayfa = "Sayfaa" Or sayfa = "AKTARMA" Or sayfa = "LİSTE" Or sayfa = "Sayfa1" Then
Else
Application.DisplayAlerts = False
MsgBox sayfa
Sheets(a).Delete
ListBox1.RemoveItem a - 1

End If
End If
Next
End Sub

Private Sub UserForm_Initialize()
ListBox1.ListStyle = 1
ListBox1.MultiSelect = 1
Dim syf As Worksheet
For Each syf In Worksheets
ListBox1.AddItem syf.Name
'If syf.Name <> "menü" And syf.Name <> "Sayfaa" And syf.Name <> "AKTARMA" And syf.Name <> "LİSTE" _
'And syf.Name <> "Sayfa1" Then

'End If
Next
End Sub
 

vardar07

Destek Ekibi
Destek Ekibi
Katılım
19 Mart 2008
Mesajlar
2,154
Excel Vers. ve Dili
Office 2007 Enterprise
Türkçe
Halit Bey çok teşekkürler tamamdır. Listboxta koruma altına alınan sayfalar görünmeden yapmanın yolu yok'mudur.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Halit Bey çok teşekkürler tamamdır. Listboxta koruma altına alınan sayfalar görünmeden yapmanın yolu yok'mudur.
kod:

Kod:
Private Sub CommandButton5_Click()
Dim say
say = 0
Dim syf As Worksheet
For Each syf In Worksheets
[COLOR="Red"]If syf.Name = "menü" Or syf.Name = "Sayfaa" Or syf.Name = "AKTARMA" Or syf.Name = "LİSTE" Or syf.Name = "Sayfa1" Then[/COLOR]
Else
say = say + 1
End If
Next

If say <= 0 Then Exit Sub
For a = say To 1 Step -1
If ListBox1.Selected(a - 1) = True Then
sayfa = ListBox1.List(a - 1, 0)
[COLOR="red"]If sayfa = "menü" Or sayfa = "Sayfaa" Or sayfa = "AKTARMA" Or sayfa = "LİSTE" Or sayfa = "Sayfa1" Then[/COLOR]
Else
Application.DisplayAlerts = False
MsgBox sayfa
Sheets(sayfa).Delete
ListBox1.RemoveItem a - 1

End If
End If
Next
End Sub

Private Sub UserForm_Initialize()
ListBox1.ListStyle = 1
ListBox1.MultiSelect = 1

Dim syf As Worksheet
For Each syf In Worksheets
[COLOR="red"]If syf.Name = "menü" Or syf.Name = "Sayfaa" Or syf.Name = "AKTARMA" Or syf.Name = "LİSTE" Or syf.Name = "Sayfa1" Then[/COLOR]
Else
ListBox1.AddItem syf.Name
End If
Next
End Sub
 

vardar07

Destek Ekibi
Destek Ekibi
Katılım
19 Mart 2008
Mesajlar
2,154
Excel Vers. ve Dili
Office 2007 Enterprise
Türkçe
Ben sadece silmeyi gösterdim. Ayrıntıya girmedim :)
Necdet Bey yanlış anlamayın ayrıntı multiselect'ti. Yinede ayrıntısı olmayan bir çalışma için güzel bir örnek. Hepinize ayrı ayrı teşekkürlerimi sunarım.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst