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
 
Katılım
6 Mart 2008
Mesajlar
92
Excel Vers. ve Dili
2003 tr
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ı...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,666
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 
Katılım
6 Mart 2008
Mesajlar
92
Excel Vers. ve Dili
2003 tr
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...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,666
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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:
Katılım
6 Mart 2008
Mesajlar
92
Excel Vers. ve Dili
2003 tr
Çok sağolun Korhan Bey..
.Benim için çok aydınlatıcı oldu...
 
Üst