Kodlar hata veriyor

Kısa Açıklama

Kodlar hata veriyor isimli başlıkta, ilgili işlemlere dair detaylar yer almaktadır.
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba, hayırlı günler.

Ekte gönderdiğim excel dosyamın PLAKALAR ve T.C.LER dosyasındaki B1 hücresindeki KOPYALA butonuna tıkladığımda aşağıdaki kodlar bazen hata veriyor.

Sheets("PLAKALAR").Range("A2:A1000").ClearContents

Sheets("PLAKALAR").Range("B2:B" & [B65565].End(3).Row).Replace " ", ""
Sheets("PLAKALAR").Range("B2:B" & [B65565].End(3).Row).Replace ",", ""
Sheets("PLAKALAR").Range("B2:B" & [B65565].End(3).Row).Replace ".", ""

Range("B2:B" & son1).Copy

Örnek olarak PLAKALAR sayfasındaki KOPYALA butonuna tıklıyorum, vazgeçip daha sonrada T.C.LER sayfasındaki kopyala butonuna tıkladığımda
Range("B2:B" & son2).Copy bu kodu sarıya boyuyor, vazgeçip daha sonrada PLAKALAR sayfasına KOPYALA butonuna tıkladığımda bu seferde Sheets("PLAKALAR").Range("B2:B" & [B65565].End(3).Row).Replace " ", "" bu kodu sarıya boyuyor.
Bazende Sheets("PLAKALAR").Range("A2:A1000").ClearContents bu kodu sarıya boyuyor.

Bir türlü çözemedim yardımcı olur musunuz?
 
Ekli dosyalar
Merhaba,

T.C.'LER sayfasında Private Sub Worksheet_Change(ByVal Target As Range) kod bloğunda Application.EnableEvents = False kodlarını başlık altına ve end sub üstüne alın...
 
OLAY/ETKİNLİK anlamına geliyor, "DURUM DEĞİŞİKLİKLERİNİN OTOMATİK ALGILANMASI gibi düşünün.
İşlem tamamlanıncaya kadar diğer kodların (Worksheet_change gibi) TETİKLENMESİ OLAYlarını geçici olarak durdurmuş oluyorsunuz.
Diyelim, worksheet_change kodunda A1 hücresi hedef hücre ve A1'e elle bir şey yazdığınızda yapılacak işlemi kodlamışsınız.
Başka bir kod da A1'e bir değer yazıyor durumda.
İşte ikinci kod işlemini tamamlayıncaya kadar A1 e veri yazma işleminin Worksheet_Changi kodunu tetiklemesini engellemek için bu kod satırı yazılıyor ve böylece A1e sadece elle veri girildiğinde o kod çalışıyor, diğer kod A1 e veri yazdığında çalışmıyor.

Ayrıca bir hususu belirtmek isterim: belgenizde mevcut kodlarda ON ERROR ... kod satırları görmüştüm.
HATA beklenen/istenilen/nedeni bilinen bir HATA ise mesele yok. Yani KONTROLLÜ HATA diyebiliriz.
Ancak bu kod satırı hatanın nedeni konusunda bilgi sahibi olmanızı sağlamaz ve
bilinmeyen/öngörülmeyen bir hata varsa da hata yokmuş gibi görevini yapar.

Bu nedenle bilinmeyen hata durumu için kullanılmamalıdır. Hatta muhtemel hata durumlarına yönelik kontrol kodları oluşturulup
hatanın oluşması engellenmelidir.
Örneğin makroda WorksheetFunction.Match(..... satırı varsa ve alanda aranan değer yoksa bu kod satırı HATA verecektir.
Bu natayı gidermek yerine On Error.... kod satırı yazmak yerine;
COUNTIF satırıyla sonuç sıfırsa şunu yap, değilse MATCH işlemini yap gibi bir yapı daha anlamlıdır.

.
 
Sayın Ömer Bey, kopyala butonuna bastıktan sonra, Esc ile kopyalamayı durduruyorum, G sütununda çalışan sayfadaki
Private Sub Worksheet_SelectionChange(ByVal Target As Range) bu kod başlığı altındaki kodlar çalışmıyor.
 
Ben böyle zamanlarda akış şeması gibi bir şey hazırlarım.
Hangi kod neyi yapacak, neyi yapmayacak, hangisinden sonra hangisi çalışacak, hangisi çalışmamalı gibi.

Bence şöyle yapın; VBA ekranını açın ve sırayla tüm kod blokları için, İMLEÇin işlem gören ilk kod satırına gelmesini sağlayıp,
F9 tuşuna basın (kod satırı BORDO zeminli hale gelecek).
Sonra da KOPYALA kodunu düğme üzerinden değil, ilgili kodu VBA ekranında açıp F8 tuşuna aralıklarla basarak ADIM ADIM çalıştırın.
Böylece işlem sırasında hangi kodların devreye girdiğini ve işlemleri adımm adım görmüş olursunuz.

Bir makro devreye girmesi gereken nokta hangisiyse o noktaya
Applicatiion.EnableEvent=True satırı ekleyin, işlem sonuna ise False satırı ekleyin.

Umarım anlatabilmişimdir.
 
Sayın Ömer Bey, kopyala kodunu Application.EnableEvents = True bu kodla hallettik, ellerinize sağlık

Bu seferde sayfanın kod bölümündeki aşağıdaki başlık altındaki kodlar çalışmıyor.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
Belgenizdeki işleyişi tam olarak anlayamadım açıkçası.
Sadece TCler sayfasıyla ilgili olarak şöyle bir baktım.
Worsheet_Change kodunda On Error Resume Neşt satırını silerek veya so başına TEK TIRNAK koyarak etkisiz hale getirin,
ardından o satırın yerine Application.EnableEvents = False satırı ekleyin, End Sub satırının hemen üstüne de aynı kodu =TRue olarak ekleyin bakalım.

.
 
Sayın Ömer Bey, sayfadaki kodların çalışmasının videosunu ekliyorum.

B sütunundaki hücreye T.C. yi yazarken boşluklu yazılabilir, kod onu düzeltiyor, E sütunundaki hücreye çift tıkladığımda bugünün tarihin atıyor, işi biten bir T.C. varsa G sütunundaki hücreye tıkladığımda ilgili satırı aktarma mesajı ekrana geliyor, evet dersem aktarıyor.
 
Ekli dosyalar
Sayın Ömer bey, kopyala butonuna bastıktan sonra, sayfadaki kodlar çalışmıyor.
Exceli kapatıp tekrar açıyorum, kopyala butonuna basmaz isem, sayfanın yüzünde işlem yaptığımda sayfanın kodları çalışıyor.
Ne yapıyorsa kopyala butonu engelliyor, anlayamadım.
 
Eksiksiz ve işlem sırasına göre yapılacak şeyleri yazarsanız
(tercihimiz, güzel bir başlıkla yeni bir konu açılması) bakılır elbet.
Tamirattan daha kolay olması kuvvetle muhtemel.

Uzay mekiği fırlatmayacağız, Türkçe si yazılan bir işlemlerin Excelce si yazıacak değil mi? ;)
 
Geri
Üst