Dilimleyici Aç Kapat

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
538
Excel Vers. ve Dili
Ofis 2016 Tr 64 bit
Altın Üyelik Bitiş Tarihi
15.06.2027
Merhabalar

2016 Türkçe kullanıyorum. Renkli satırda hata veriyor. Neden olabilir ? Nasıl aşabiliriz. Kodları Copilot'tan aldım.

Sub DilimleyiciAcKapat()
Dim sl As SlicerCache
Dim sc As SlicerCacheLevel
Dim si As SlicerItem
Dim slicerName As String
Dim isVisible As Boolean

slicerName = "ÜRÜN_KODU" ' Dilimleyicinizin adını buraya yazın
Set sl = ActiveWorkbook.SlicerCaches(slicerName)

isVisible = Not sl.Slicers(1).Visible

For Each sc In sl.SlicerCacheLevels
For Each si In sc.SlicerItems
If isVisible Then
si.Selected = True
Else
si.Selected = False
End If
Next si
Next sc

sl.Slicers(1).Visible = isVisible
End Sub
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
445
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Bu hatanın nedeni muhtemelen Türkçe Office sürümünüzde bazı nesne ve özelliklerin İngilizce olan VBA kodlarıyla tam uyumlu olmaması olabilir. Excel'in Türkçe sürümünde bazı özellikler ve nesne isimleri dil farklılıkları nedeniyle farklı davranabiliyor veya eksik olabiliyor. Ayrıca, Türkçe sürümde "SlicerCaches" veya "SlicerCacheLevels" gibi özelliklerin bulunmaması da mümkün.

Birkaç çözüm önerisi:

1. Dilimleyici Adı Kontrolü:
Kodda slicerName = "ÜRÜN_KODU" kısmında dilimleyicinin adı ÜRÜN_KODU olarak belirtilmiş. Bu adı tam olarak doğru yazdığınızdan emin olun. Farklı bir dilimleyici adı varsa bunu doğru bir şekilde güncelleyin.


2. Güncelleme Gerekliliği:
Office 2016 Türkçe sürümünde bazı dilimleyici (Slicer) özellikleri eksik olabiliyor. Eğer mümkünse, daha güncel bir Office sürümüne geçiş yapmayı düşünebilirsiniz.


3. Farklı Bir Yöntem Kullanma:
Eğer kod Copilot'tan alındıysa ve uyumsuzluklar varsa, dilimleyiciyle çalışmak için daha basit ve uyumlu bir VBA kodu yazmayı düşünebiliriz.


4. Hata Ayıklama Adımları:
Hatanın oluştuğu satırı belirlemek için her bir satırı tek tek çalıştırarak hangi satırın hata verdiğini öğrenebilirsiniz. Bu şekilde sorunun kaynağını daha net
anlayabiliriz.
 

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
538
Excel Vers. ve Dili
Ofis 2016 Tr 64 bit
Altın Üyelik Bitiş Tarihi
15.06.2027
Merhabalar
tugkan hocam ilginiz için teşekkürler....

slicerName = "Dilimleyici_ÜRÜN_KODU" olarak değiştirdim. Hatayı bir alt satırda verdi.

Sub DilimleyiciAcKapat()
Dim sl As SlicerCache
Dim sc As SlicerCacheLevel
Dim si As SlicerItem
Dim slicerName As String
Dim isVisible As Boolean

slicerName = "Dilimleyici_ÜRÜN_KODU"
Set s1 = ActiveWorkbook.SlicerCaches(slicerName)

isVisible = Not s1.Slicers(1).Visible

For Each sc In sl.SlicerCacheLevels
For Each si In sc.SlicerItems
If isVisible Then
si.Selected = True
Else
si.Selected = False
End If
Next si
Next sc

sl.Slicers(1).Visible = isVisible
End Sub
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
445
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Kodunuzu incelediğimde birkaç hata göze çarpıyor. İlk olarak, s1 değişkeniyle sl arasında bir uyumsuzluk var. Set s1 = ActiveWorkbook.SlicerCaches(slicerName) satırında s1 olarak atama yapılırken, döngülerde sl olarak kullanılmış. Ayrıca, değişkenleri netleştirmek için slicerName dışında s1 veya sl gibi değişken isimlerinin karıştırılmaması önemli.

Bu hataları giderdikten sonra düzeltilmiş kod şöyle olmalı:

Kod:
Sub DilimleyiciAcKapat()
    Dim sl As SlicerCache
    Dim sc As SlicerCacheLevel
    Dim si As SlicerItem
    Dim slicerName As String
    Dim isVisible As Boolean

    slicerName = "Dilimleyici_ÜRÜN_KODU"
    Set sl = ActiveWorkbook.SlicerCaches(slicerName) ' sl olarak atandı

    isVisible = Not sl.Slicers(1).Visible

    For Each sc In sl.SlicerCacheLevels
        For Each si In sc.SlicerItems
            If isVisible Then
                si.Selected = True
            Else
                si.Selected = False
            End If
        Next si
    Next sc

    sl.Slicers(1).Visible = isVisible
End Sub
Bu düzenlemeyle birlikte, slicerName tanımınız Dilimleyici_ÜRÜN_KODU olarak ayarlı olduğu sürece çalışacaktır.
 

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
538
Excel Vers. ve Dili
Ofis 2016 Tr 64 bit
Altın Üyelik Bitiş Tarihi
15.06.2027
Hocam merhaba

Normalinde s1 buraya kopyalayınca I gibi çıktığı için burada düzeltme yapmıştım.
Maalesef burada hata veriyor. Araştırmaya devam ediyorum.
isVisible = Not sl.Slicers(1).Visible
Araştırmaya devam ediyorum. Amacım istediğinde Dilimleyiciyi açmak veya kapatmak. Çünkü liste uzun olunca ekran görünümünü engelliyor.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
445
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Merhabalar

2016 Türkçe kullanıyorum. Renkli satırda hata veriyor. Neden olabilir ? Nasıl aşabiliriz. Kodları Copilot'tan aldım.

Sub DilimleyiciAcKapat()
Dim sl As SlicerCache
Dim sc As SlicerCacheLevel
Dim si As SlicerItem
Dim slicerName As String
Dim isVisible As Boolean

slicerName = "ÜRÜN_KODU" ' Dilimleyicinizin adını buraya yazın
Set sl = ActiveWorkbook.SlicerCaches(slicerName)

isVisible = Not sl.Slicers(1).Visible

For Each sc In sl.SlicerCacheLevels
For Each si In sc.SlicerItems
If isVisible Then
si.Selected = True
Else
si.Selected = False
End If
Next si
Next sc

sl.Slicers(1).Visible = isVisible
End Sub
Copilot u bilmiyorum ama chatgpt ye derdini güzel anlatabilirsen çok iyi kod yazıyor
 

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
538
Excel Vers. ve Dili
Ofis 2016 Tr 64 bit
Altın Üyelik Bitiş Tarihi
15.06.2027
Hocam merhaba

Chatgpt den aldığım kod...

Dim slicerVisible As Boolean

Sub ToggleSlicerVisibility()
' Başlangıçta dilimleyicinin görünürlüğünü kontrol etmek için
slicerVisible = Not slicerVisible

' Dilimleyicinin adını burada "Slicer_Tablo" yerine doğru adla değiştirin
If slicerVisible Then
' Dilimleyiciyi göster
ActiveSheet.Shapes("Dilimleyici_ÜRÜN_KODU").Visible = True 'Burada hata verdi...
Else
' Dilimleyiciyi gizle
ActiveSheet.Shapes("Dilimleyici_ÜRÜN_KODU").Visible = False
End If
End Sub
 
Üst