• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Bu kodda nasıl bir yanlışlık var çözemedim

Katılım
6 Mart 2008
Mesajlar
92
Excel Vers. ve Dili
2003 tr
Merhaba arkadaşlar aşağıdaki kodlar makromun bir bölümü kafanız karışmasın diye tamamını yazmadım.

Makrom sayfa 1 de A1 den A65000' kadar herhangi bir hücrede değişiklik olduğunda çalışıyor. Aşağıdaki kod Sayfa 2 de A sütununda aynı olan satırları siliyor. Bu kodu bir butona aktardığım zaman sorunsuz şekilde çalışıyor. Aşağıdaki gibi yazdığımda döngüyü sayfa 1'i baz alarak çalışıyor. Ama ben kod'ta sayfa2.select yazdığım halde neden sayfa1'i baz alıyor.


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Intersect(Target, Range("a2:a65000")) Is Nothing Then Exit Sub
........
.......
Sheets("Sayfa2").Select
For a = Cells(65536, 1).End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(Range("a1:a" & a), Cells(a, "a")) > 1 Then Rows(a).Delete
end sub
 
Arkadaşlar anlatım konusunda sorun olabileceğini düşünerek örnek dosya ekliyorum.
Örnek dosyada listele butonuna basınca değişikliği
birde a3 hücresinde bir değişiklik olduğunda farkı gözlemleyin

kodlar aynı...
 
Selamlar,

Belirttiğiniz bölümü aşağıdaki şekilde değiştirip denermisiniz.

Kod:
Set S2 = Sheets("Sayfa2")
For a = S2.Cells(65536, 1).End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(S2.Range("a1:a" & a), S2.Cells(a, "a")) > 1 Then S2.Rows(a).Delete
Next
 
Korhan hocam ilgi ve alakanıza çok teşekkür ederim.

Kafama takılan birşeyi daha sorayım :
Sheets("Sayfa2").Select
bu satırın altına yazılan kodlar mantıken sayfa 2' ye göre uygulanmaz mı?
Yani ben sayfa 2'yi seçiyorum zaten...
 
Selamlar,

Uygulanır. Zaten kodunuz şu haliylede çalışıyor. Ama sizin kodlara ne yaptırmak istediğiniz önemli olan.

"Private Sub Worksheet_Change(ByVal Target As Excel.Range)" bu bölümü hangi sayfada kullanıyorsanız o sayfanın hücrelerini baz alır sayfa seçtirmeniz bir şey ifade etmez. Bu sebeple eğer Sayfa2 de kayıt kontrolü yapmak istiyorsanız ya benim verdiğim gibi Set S2 = Sheets("Sayfa2") şeklinde sayfayı sabitleyip "S2.Range" şeklinde kullanacaksınız yada "Sheets("Sayfa2").Range" ifadesi şeklinde kod yapınızı oluşturacaksınız.
 
Son düzenleme:
Çok sağolun Korhan Bey..
.Benim için çok aydınlatıcı oldu...
 
Geri
Üst