• DİKKAT

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

Kolondaki formül sonucuna göre uyarı veren makro

Katılım
4 Ağustos 2006
Mesajlar
134
Excel Vers. ve Dili
2017 Eng
Merhabalar,

A kolonununa kod numaraları girişleri yapılıyor. (A2:A10'a kadar manuel girişler)
B kolonunda ise formüllü değerler bulunmakta . Bu formüller A kolonuna yazılan kodun tekrar edilip edilmediğini kontrol ediyor. (B2 =COUNTIF($A$2:$A$10;A2) ; B3=COUNTIF($A$2:$A$10;A3); ... B kolonundaki formülün sonucu 2 olursa, A kolonuna en son yazılan kodun daha önce kullanıldığı anlaşılabiliyor.

Yani özetle; A kolonuna (A2:A10) veri girildiğinde B kolonunda (B2:B10) hesaplanan formüllerin herhangi birinin sonucu 2 ise, "Kod tekrarı" uyarısı yazan bir makro hazırlamanızı rica ederim.

saygılar,
 
Niye formülle yapmıyorsunuz ?

Kod:
if(COUNTIF($A$2:$A$10;A2)=2;"Kod Tekrarı";COUNTIF($A$2:$A$10;A2))
 
Niye formülle yapmıyorsunuz ?

Kod:
if(COUNTIF($A$2:$A$10;A2)=2;"Kod Tekrarı";COUNTIF($A$2:$A$10;A2))
B kolonundaki formüllerden herhangi birinin sonucu 1'den büyük ise sürekli hata veren bir makroya ihtiyacım var. Çünkü formül sonucu "Kod hatası" dese bile kodu değiştirmeme durumlarının önüne geçmem gerekiyor.
 
Bu şekilde kendinize uyarlayınız.

Private Sub Worksheet_Calculate()
If [b3] > 1 Then
MsgBox "Kod Tekrarı Vardır", vbCritical
End If
End Sub
 
Bu şekilde bir deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A3:A100]) Is Nothing Then Exit Sub
If Target.Offset(, 1).Value2 > 1 Then
MsgBox "Kod Tekrarı Vardır", vbCritical
Target.Activate
End If
End Sub
 
Bu şekilde bir deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A3:A100]) Is Nothing Then Exit Sub
If Target.Offset(, 1).Value2 > 1 Then
MsgBox "Kod Tekrarı Vardır", vbCritical
Target.Activate
End If
End Sub
Çok teşekkürler.
"Kod Tekrarı Vardır" uyarısını "tamam" diyerek kapattığımda, kullanıcı son girişini düzeltmez ise yine "Kod Tekrarı Vardır" uyarsını çıkmasını sağlayabilir misiniz. Kullanıcının mutlaka son girdiği kodu değiştirmesini zorunlu kılmak istiyorum...

Ayrıca, makrodan sonra dosya üzerinde herhangi bir satır seçip "Delete " ya da "İnsert" yaptığımda aşağıdaki hatayı alıyorum:

Run-time error '1004':
Application-defined or object-defined error

Bu hatayı da kaldırabilir misiniz

Saygılarımla,
 
Hata iletisini önlemek için kodun başına,
Kod:
On Error Resume Next
ekleyiniz.
Not : İstenilen sayıya zorlamak için VERİ DOĞRULAMA > Girdi İletisi daha pratik olur diye düşünüyorum.
 
Son düzenleme:
Hata iletisini önlemek için kodun başına,
Kod:
On Error Resume Next
ekleyiniz.
Not : İstenilen sayıya zorlamak için VERİ DOĞRULAMA > Girdi İletisi daha pratik olur diye düşünüyorum.

Hatayı kaldırmış oldum teşekkürler.

İçerisinde formül olan hücrelere (B2:B100) Veri Doğrulama ile "1 den büyük sayı olamaz kuralı" eklediğimde, formülün sonucu 2 çıksa bile veri doğrulama girdi uyarısını vermiyor.
 
A2:A100 veri aralığını deneyiniz, B2:B100 aralığı A sütununda veri aldığı için Girdi Uyarısı vermez.
 
A2:A100 veri aralığını deneyiniz, B2:B100 aralığı A sütununda veri aldığı için Girdi Uyarısı vermez.

Dolayısıyla, makroya gerek kalmaksızın "veri doğrulama" ile aynı kodun tekrar yazılmasını önleyen yöntemi beni yönlendirerek buldurdunuz :)

Data Validation--> Custom --> Formula : =IF(COUNTIF(kodlar;A2)=1;TRUE;FALSE)

Çok teşekkür ederim.

Saygılarımla,
 
Geri
Üst