• DİKKAT

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

Kod hatası hk.

Katılım
14 Kasım 2006
Mesajlar
80
Excel Vers. ve Dili
2002
Merhaba;
Aşağıdaki kod ile sayfa 1 deki A sütününda bulunan aktif hücreye yazılı olan değer, sayfa 2 deki A sütünundaki yazılı değerlerden birisi ile aynı ise bir uyarı almak istiyorum. Kırmızı olan yerde hata alıyorum. Yardımlarınız için teşekkürler.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Z = Sheet2.[A65536].End(3).Row
For x = 1 To Z
   [COLOR="Red"]If Sheet1.Range(ActiveCell.Value) [/COLOR]= Sheet2.Cells(x, 1).Value Then
        MsgBox "KURUMSAL"
        End If
        Exit For
       Next
End Sub
 
Merhaba,
şu kodu denermisiniz, saygılar.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Z = Sheet2.[A65536].End(3).Row
      If Target.Cells.Count > 1 Then Exit Sub
      If Intersect(Target, Range("A1:A" & [A65536].End(3).Row)) Is Nothing Then
      Else
        a = Target.Row
                For x = 1 To Z
                 If Sheet2.Cells(x, "A") = Cells(a, "A") Then
                   MsgBox "KURUMSAL"
                   Exit For
                   End If
                  Next x
          End If
End Sub
 
Sayın dentex yardımınız için teşekkür ederim.İstediğim oldu.
Acemi biri olarak eklediğiniz aşağıdaki kodun çalışmasını, zamanınız var ise açıklayabilirmisiniz.

If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("A1:A" & [A65536].End(3).Row)) Is Nothing Then
Else
a = Target.Row
 
Merhaba,
akademik terminolojisini bilmiyorum. Ancak "intersect" kesişim anlamında kullanılır. Sayfada değişim intersect ile belirtilen alanda olduysa, değişim olan hücre satırı Target.row ile a değişkenine atanmıştır. Umarım yardımcı olabilmişimdir, iyi akşamlar.
 
Sayın Dentex,

Enbaşta yazdığım sayfa 1 deki değerleri karşılaştıracağım sayfa sayısı arttı. Yani sayfa 1 değerler kurumsal sayfasında var ise kurumsal uyarısını alıyorum fakat bireysel sayfasında var ise bireysel mesajını almak istediğim ve sizin verdiğiniz örnek üzerinden acemi biri olarak düz mantıkla olayları diğer sayfalara göre ikinci defa yazmama rağmen yapamadım. Örnek dosya ektedir. Kodlar benim çabalarımla yanlış olan halinde aşağıdaki gibidir.:)...Teşekkür ederim.
Private Sub Worksheet_Change(ByVal Target As Range)
Z = Sheets("KURUMSAL").[A65536].End(3).Row
K = Sheets("BİREYSEL").[A65536].End(3).Row
If Intersect(Target, Range("A1:A" & Z) Or (Range("A1:A" & K))) Is Nothing Then
Else
Y = Target.Row
For X = 1 To Z
For M = 1 To K
If Sheets("BİREYSEL").Cells(M, "A") = Cells(Y, "A") Then
MsgBox "BİREYSEL"
If Sheets("KURUMSAL").Cells(X, "A") = Cells(Y, "A") Then
MsgBox "KURUMSAL"
Exit For
End If
End If
Next M
Next X
End If
End Sub
 

Ekli dosyalar

Merhaba,
kodu aşağıdaki şekilde değiştirin, kolay gelsin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s1, s2 As Worksheet
Set s1 = Sheets("KURUMSAL")
Set s2 = Sheets("BİREYSEL")
son1 = s1.[A65536].End(3).Row
son2 = s2.[A65536].End(3).Row

      If Target.Cells.Count > 1 Then Exit Sub
      If Intersect(Target, Range("A1:A" & [A65536].End(3).Row)) Is Nothing Then
      Else
        a = Target.Row
                For x = 1 To son1
                 If s1.Cells(x, "A") = Cells(a, "A") Then
                   MsgBox "KURUMSAL"
                   Exit For
                   End If
                  Next x
                 For j = 1 To son2
                 If s2.Cells(j, "A") = Cells(a, "A") Then
                   MsgBox "BİREYSEL"
                   Exit For
                   End If
                  Next j
          End If
Set s1 = Nothing: Set s2 = Nothing
End Sub
 
Sayın Dentex;
Elinize sağlık çok teşekkür ederim. Kodu böyle okuyunca neler yaptığını anlıyorumda iş bunu yazabilmekte dilerim birgün o seviyeyede gelebilirim.
Burada Range("A1:A") olarak belirtilen yere neden "A:A" diye yazmadık. Yani buranın bize döndürdüğü sonuç atıyorum A5, A6 gibi bir hücre değilmi? Teşekkürler.
 
Sayın Dentex;
Elinize sağlık çok teşekkür ederim. Kodu böyle okuyunca neler yaptığını anlıyorumda iş bunu yazabilmekte dilerim birgün o seviyeyede gelebilirim.
Burada Range("A1:A") olarak belirtilen yere neden "A:A" diye yazmadık. Yani buranın bize döndürdüğü sonuç atıyorum A5, A6 gibi bir hücre değilmi? Teşekkürler.
 
Merhaba,
sizin dediğiniz gibi de yazılabilirdi. Sadece ilgili kolonun son dolu satırına kadar kontrol edilsin istedim. Performans açısından bir kazancı olabilir mi çok emin değilim, belki de alışkanlık, saygılar.
 
Merhaba,
Sayın dentex cevaplamış, benimki de alternatif olsun. İyi çalışmalar.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A" & [A65536].End(3).Row)) Is Nothing Then Exit Sub
Set s1 = Sheets("KURUMSAL")
For x = 1 To 2
Set bul = s1.Range("A1:A" & [A65536].End(3).Row).Find(Target, lookat:=xlWhole)
If Not bul Is Nothing Then
msj = msj & ve & s1.Name
End If
Set s1 = Sheets("BİREYSEL")
ve = " ve "
Next
If msj <> "" Then MsgBox Target & Chr(10) & msj & " sayfasında vardır.", vbInformation, "DURUM"
End Sub
 

Ekli dosyalar

Geri
Üst