Birleştirilmiş hücrelerin temizlenmesi

mars2

Altın Üye
Katılım
2 Eylül 2004
Mesajlar
590
Excel Vers. ve Dili
2016 - Türkçe
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
26-03-2026
İyi Akşamlar;

Excel çalışma kitabımın etiket sayfasının C42 ile C52 hücrelerini temizleme istiyorum. Aşağıdaki makroları deneme rağmen silmiyor. Neden ve hata nereden kaynaklanmaktadır.

C42 ile D42 hücresi birleşmiş ve C42 olarak gözüküyor.
C43 ile D43 hücresi birleşmiş ve C42 olarak gözüküyor.

Private Sub Worksheet_Change(ByVal Target As Range)

S1 = Sheets("etiket (2)")
S1.Range("C42:C52"). ClearContents
S1.Range("H42:H52") .ClearContents

End sub

.Clearcontents yerine =Empty metodun uyguladım yine çalışmadı
 

mars2

Altın Üye
Katılım
2 Eylül 2004
Mesajlar
590
Excel Vers. ve Dili
2016 - Türkçe
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
26-03-2026
İyi Akşamlar;

Excel çalışma kitabımın etiket sayfasının C42 ile C52 hücrelerini temizleme istiyorum. Aşağıdaki makroları deneme rağmen silmiyor. Neden ve hata nereden kaynaklanmaktadır.

C42 ile D42 hücresi birleşmiş ve C42 olarak gözüküyor.
C43 ile D43 hücresi birleşmiş ve C42 olarak gözüküyor.

Private Sub Worksheet_Change(ByVal Target As Range)

S1 = Sheets("etiket (2)")
S1.Range("C42:C52"). ClearContents
S1.Range("H42:H52") .ClearContents

End sub

.Clearcontents yerine =Empty metodun uyguladım yine çalışmadı
 

Ouzz_z

Altın Üye
Katılım
19 Nisan 2024
Mesajlar
87
Excel Vers. ve Dili
LTSC Pro Plus 2024
Altın Üyelik Bitiş Tarihi
20-04-2026
Sayfa ataması yaparken Set kullanınız. Ayrıca her değişiklikte çalıştırdığınız için kısır döngüye girip hata verecektir. Çünkü son aralık silindiğinde bu da bir değişiklik olacak ve excel donacak. Düzeltmeyi inceleyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    
        Set S1 = Sheets("etiket (2)")
        S1.Range("C42:C52").ClearContents
        S1.Range("H42:H52").ClearContents
        
    Application.EnableEvents = True
End Sub
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,127
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kodun iki temel sorunu var:
  1. Nesneyi Set ile atamıyorsun → S1 = Sheets("etiket (2)") yanlış.
  2. Worksheet_Change içinde hücre silmek olayı yeniden tetikler → Application.EnableEvents kapatılmadığı için olay kendi kendini çağırır (sonsuz döngü/hataya yol açar).
    Ayrıca noktanın önündeki boşluk (. ClearContents) VBA’da sözdizimi hatasıdır. Bir de birleştirilmiş hücrelerde yalnızca sol-üst hücre değer tutar; temizleme bu hücreye uygulanmazsa bir şey olmaz.
Aşağıdaki kodu ilgili sayfanın (etiket (2)) kod modülüne değil, genel bir modüle koyup manuel çalıştırabilirsin ya da sayfa modülünde Worksheet_Change kullanacaksan olayları kapatıp açmalısın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("C9")) Is Nothing Then Exit Sub
    If Target.CountLarge > 1 Then Exit Sub   

    On Error GoTo ExitHandler
    Application.EnableEvents = False

    Dim rng As Range
    Set rng = Me.Range("C42:D52,H42:I52")

    ' Seçenek A: Her şeyi temizle (Muzaffer Ali hocamızın yaptığı gibi)
    rng.ClearContents

    ' Seçenek B: (İSTERSENİZ) sadece sabit değerleri temizle
    ' Böylece formüller korunur, formül sonuçları yeni C9'a göre kendiliğinden güncellenir.
    'On Error Resume Next
    'rng.SpecialCells(xlCellTypeConstants).ClearContents
    'On Error GoTo ExitHandler

ExitHandler:
    Application.EnableEvents = True
End Sub
Sayfa Modülüne ekleyiniz
 
Son düzenleme:

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,127
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Konu açılmış lütfen tekrar açmayınız
 

mars2

Altın Üye
Katılım
2 Eylül 2004
Mesajlar
590
Excel Vers. ve Dili
2016 - Türkçe
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
26-03-2026
İyi Günler;

Konu hakkında ilgi ve yardımlarınıza teşekkürler.

Konu, yanlışlıkla ikinci kez açılmıştır.

C9 hücresinde dosya nosunu yazınca C42, C43, C44, C45, C46, C47, C48, C49,C50, C51, C52 hücrelerine dosya ile isimler gelmektedir.

C42 ile D42 hücresi ile birleşmesi sonucu C42 olarak gözükmektedir. Diğer hücrelerde aynı şekildedir.

Ancak, dosyalarda farklı ism veya isimler bulunmaktadır. Örneğin C42, C43, C44 vd farklı isim bulunduğu, C9'a yeni no girdiğimde C42 ile C52 arsında bulunan isimlerin silinmesini istemekteyim.

Yukarıda vermiş olduğunuz kodlarını Worksheet_Change eventi ile uygulamama rağmen fazla isimler silinmemeketdir,

Teşekkür
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,662
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodu deneyiniz.

Birleştirilmiş hücreler birlikte adres belirtilmelidir.
Range("C42").ClearContents
Hata verir
Range("C42:D42").ClearContents
Şeklinde olmalı.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("C9"), Target) Is Nothing Then
        Application.EnableEvents = False
        With ThisWorkbook.Worksheets("etiket (2)")
            .Range("C42:D52").ClearContents
            .Range("H42:I52").ClearContents
        End With
        Application.EnableEvents = True
    End If
End Sub
Yada aşağıdaki gibi olmalıdır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("C9"), Target) Is Nothing Then
        Application.EnableEvents = False
        With ThisWorkbook.Worksheets("etiket (2)")
            .Range("C42:C52, H42:H52").Value = ""
        End With
        Application.EnableEvents = True
    End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,421
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Mükerrer konu başlıkları tarafımca birleştirilmiştir...
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,127
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Muzaffer Hocamızın paylaştığı çözüm çok güzel olup birleşik hücreleri kapsayacak şekilde C-D ve H-I sütunlarını birlikte temizlemektedir.

Benim ilk örneğim sadece C ve H sütunlarını temizlediği için (özellikle birleştirme C-D ve H-I üzerinde ise) etkisi eksik kalmış olabilir.
Bende 4 nolu mesajımı alternatif olarak ekledim.İsterseniz kullanabilirsiniz.
 

mars2

Altın Üye
Katılım
2 Eylül 2004
Mesajlar
590
Excel Vers. ve Dili
2016 - Türkçe
2019 - Türkçe
Altın Üyelik Bitiş Tarihi
26-03-2026
Sayın Muzaffer Ali;

İlgi ve kod için teşekkürler.
Kod istediğim gibi çalışmaktadır
 
Üst