Çözüldü Üç Ayrı Şekildeki Makroyu Birleştirme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ErolU

Normal Üye
Değerli Arkadaşlar,
Başlıkta da belirttiğim gibi "Private Sub Worksheet_Change(ByVal Target As Range)" başlıklı üç makroyu üçü de çalışacak şekilde birleştirmek istiyorum.
Makroların aşağıda verdiğim sıralamaya göre alt alta yazılması daha doğru olacak diye düşünüyorum.
Birinci ve ikinci makroda geçen "On Error GoTo Son" satırı E8:F67 bölgesinde toplu silme işlemi yapınca çıkan makro hatasını göstermemek için kullanılıyor.
Konu hakkında yardımlarınızı rica ediyorum.

1. MAKRO:
Kod:
You must log in to view content
(19 satır)

2. MAKRO:
Kod:
You must log in to view content
(8 satır)

3. MAKRO:
Kod:
You must log in to view content
(7 satır)
 
Aynı isimde 3 makro yazılamaz. İsimleri farklı olmalı. Yoksa bilgisayar hangisini çalışacağı anlamaz. Bu nedenle isimleri değiştirmeniz gerek.
Lakin gördüğüm kadarıyla üçüde sayfa da değişiklik yapılınca tetiklenmesi ve target değerini alması gerek. Bu nedenle 1. yi sabit bırakıp diğerlerini değiştirmeniz gerek. Ve son olarak kodlar da hata meydana gelince devam etmesi pek tercih etmek istemediğim bir durum. Farklı hatalar meydana gelince göremeyeceksiniz anlamına geliyor. Bunun yerine hata neden kaynaklanıyor ve çözümü nedir arayışına girmek daha makul.

Gelelim birleştirme işine :
Kod:
You must log in to view content
(36 satır)

Not: Örnek dosya olmadığı için kodları denemeden düzenledim.
 
Sayın cakarem ve Ömer BARAN,
İki kod da tüm istenilenleri yapıyor çok teşekkürler.
İkisinden birini seçmek durumundayım. Ömer Bey'in kodu kısa olduğu için onu tercih ettim.

Ömer Bey,
Verdiğiniz koda şu iki şey eklenebilir mi?

1. Diyeyim ki öğrencilerin okul numaralarının ve adlarının yazılı olduğu E8:F67 aralığından öğrenci okuldan gittiği için bir satır sildim.
Silme işlemini yapınca o satır boş kalıyor. Kod tekrar tetiklenince sıralama yapılıyor ve boşluk kalmıyor.
Silme işlemi yapılınca bu tetikleme devreye girebilir mi?
İşlem bu kod üzerinde yapılamaz ise yine aynı bölge için çalışan Private Sub Worksheet_SelectionChange(ByVal Target As Range) başlıklı bir kod üzerinde yapılabilir mi?
Kod:
You must log in to view content
(10 satır)


2. E8:F67 aralığı için E sütununda okul numarası yazılmadan F sütununda isim yazılamaması.
 
E ve F sütununu birlikte seçip silmek yerine, tek tek silerseniz
kod aşağıdaki gibi kullanılabilir gibi geliyor bana.

CPP:
You must log in to view content
(17 satır)

.
 
Dediğiniz gibi oluyor. İki hücreyi silmeye kalkınca da makro hatası veriyor.
Ben bu hatayı şu şekilde kapatıyorum:
Kod:
You must log in to view content
(5 satır)
Son ile End Sub arasına "E67 hücresine giriş çıkış yap" talimatı versek sorun çözülüyor sanırım.
E67 hücresinin içine giriş çıkış yap komutu nasıl verilebilir?
 
Sayın @cakarem 'in de belirttiği gibi On Error GoTo gibi bir yapının kullanılması pek önerilmez.
Bence kodun en başına aşağıdaki satırı eklemek en iyisi (bundan önceki cevabımı buna göre güncelledim) .

Kod:
You must log in to view content
(1 satır)

.
 
Sayın Ömer BARAN,
Çok teşekkür ederim. Son kod tüm işlemleri hatasız yapıyor.

Şu an gerekliliği yok fakat lazım olursa kullanılabilmesi için bir şey daha sormak istiyorum.
Kod, sıralamayı küçükten büyüğe doğru yapıyor. Tersi için neresi değişmeli?
Zaman alacak bir şey ise uğraşmaya gerek yok. Dediğim gibi şuan için gerekliliği yok.

Sorunun çözülmüş şeklini içeren dosyayı aşağıya ekledim. İhtiyacı olanlar kullanabilir.
 

Ekli dosyalar

Kodu kullanmak isteyenlere uyarı:

Kod yazılırken gözden kaçmış durum şöyle:
Okul numarası benzersiz olsa ama isim daha önce yazılan isimlerden biri olsa "Bu öğrenci numarası daha önce kullanılmıştır" mesajını veriyor.
Sorunu kodun aşağıdaki satırını şu şekilde düzelterek çözebiliyoruz:
Kod:
You must log in to view content
(1 satır)
 
Mürerrer isim ve mükerrer numaraya izin verip/vermeme tercihine göre silme kısımları iptal de edilebilir elbette.
Aşağıdaki şekilde ayrı ayrı hem mükerrer no, hem de mükerrer isim kontrolü yaptırılabilir, mükerrer kayıt sildirilebilir.

VBA:
You must log in to view content
(4 satır)

.
 
Sn. @Ömer BARAN hocam;
Kod:
You must log in to view content
(11 satır)

Yukarıdaki kod ile E:F sutunlarını kontrol edebiliyoruz, birden fazla sutunda yine aynı kontrolü yapmak istersek, mesala H:I, T:U sutunlarında da rakam ve metin kontrolü yapmak istersek koda nasıl bir ilave yapmalıyız. Teşekkürler.
 
Merhaba Sayın ANARAT,
VİP ÜYELİK süresi dolmuş galiba ;)

Kabaca şöyle olabilir;

-- SAYI kısmının mükerrerliğinin önlenmesi için
If Target.Column>7 And Target.Column<10 And Target<>"" And WorksheetFunction.Countif([H:I],Target.Value)>1 Then
-- METİN kısmının mükerrerliğinin önlenmesi için
If Target.Column>19 And Target.Column<22 And Target<>"" And WorksheetFunction.Countif([T:U],Target.Value)>1 Then

Tabi bu koşulları, öncelik sırasına göre; If ... Elseif ....Elseif ..... End If gibi tek bir If...End If bloku içinde düzenleyip,
her koşul altına da silme/uyarı neyse işlemleri yazmalısınız.

Şayet halledemezseniz; bu konu ÇÖZÜLDÜğü için; isterseniz gerçek belgenizle benzer yapıda bir örnek belge üzerinden
yeni bir konu açarsanız, daha kolay çözüm bulunur. İstenileni (yapılacak engellemeye ilişkin detay açıklama olması lazım) net örneklendirirseniz iyi olur.

.
 
Belirttiğim gibi, kendi örnek belgeniz üzerinden ve
hangi durumda hangi işlemin yapılmasını istediğinizi detaylıca ve sütun/veri tipi gibi detayları da
belirterek yeni bir konu açmanız en iyisi sanırım.

.
 
Ömer Bey,
Konu çözülmüştü ama sonradan iki sorunla karşılaştım. Aynı konu olduğu için buradan yazayım dedim.
Ekteki GÜNCEL çalışma kitabında sorunları açıkladım. Kısaca şöyle:
1. Sıralama yapılan alanı nasıl değiştirebiliriz?
2. Sıralama yapılan bölgeyi silince çıkan hata nasıl giderilir?
Yardımlarınızı rica ederim.
 

Ekli dosyalar

Mevcut kodları aşağıdakilerle değiştirerek dener misiniz?

Denemeyi, bir kez alan boşken 8'inci satıra veri girerek, bir kez de 8'inci satır ve/veya başka dolu satır da varken yapın.

CSS:
You must log in to view content
(23 satır)

.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
33
Üst