• DİKKAT

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

verilen alan içinde oluşan değişikliğin o alanı görmeyen bir sayfadan hangi hücrede olduğu nasıl bilinir?

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,904
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
Bu çalışmada Data sayfasına birden çok noktadan veri geliyor. Kişiler değişmiyor, ama yaptıkları iş ya da durumları değişiyor.
Bilgi sayfasında durum özeti görülüyor. Şu anda Bilgi sayfası Data sayfasının isimlendirilmiş kopyası.
Oluşmasını istediğim ise, Data sayfasında oluşan her değişiklik Bilgi sayfasında son satıra eklensin. Ekleneceği satır Bilgi(A1) de gösterilmiş.
Örneğin şu anda son satır
Kan sut 1
şeklinde
Kan sut 1
şeklinde değişiklik oldu
Bu durum Bilgi sayfasında A14 ten itibaren
Kan sut GELDİ 29.12.2019 16:41
şeklinde olsun. Yani her değişiklik Bilgi sayfasına yeni bir satır olarak eklensin.
Özünde; Data sayfasında verilen alan içinde oluşan değişikliğin o alanı görmeyen bir sayfadan hangi hücrede olduğu nasıl bilinir?
Saygılarımla
Ornek_TK
 

Ekli dosyalar

Merhaba.

Dosyanız ekte. Kod bölümünde olan Set Alan = Range("C2:G14") Hücre alanını istediğiniz şekilde değiştirebilirsiniz.
Kodları başka bir dosyada kullanacaksanız eğer "BuÇalışmaKitabı" adlı kod editöründe de kod vardır, onları da kopyalarsınız.
 

Ekli dosyalar

Sayın Dalgalıkur,
İlginize teşekkür ederim. Ama Bilgi sayfasında A, B ve C sütunları boş zaman gösteren sütun da 14. satıra kadar hep aynı.
Sanki bir terslik var.
Saygılarımla
 
Sayın İşsiz123,
Bağlantı kırılmış galiba
Saygılar
 
Son düzenleme:
Sayın Dalgalıkur,
İlginize teşekkür ederim. Ama Bilgi sayfasında A, B ve C sütunları boş zaman gösteren sütun da 14. satıra kadar hep aynı.
Sanki bir terslik var.
Saygılarımla
Bilgi sayfası ile ilgili bir şey yapmadım sadece Data sayfasında bir hesaplama işlemi olursa çalışan bir kod yazdım gerisini siz yapabilirsiniz diye düşündüm.
 
Bunu düşünmemiştim. Hemen deniyorum.
Tekrar teşekkür ederim
Saygılarımla
 
Sayın İşsiz123,
Çok farklı bir çözüm olmuş. İlginize teşekkür ederim. Her iki yolu da anlayıp kendi dosyama uyarlamaya çalışacağım.
Umarım sorun yaşamam.
Saygılarımla
 
Sayın İşsiz123,
Yaptığınız çalışmayı, A, B, C ve D sütunlarına nasıl ayırırsınız? (kolay bir yolu var mı?)
Saygılarımla
 
Merhaba Sayın Dalgalıkur,
Sizin verdiğiniz çalışmayı
Kod:
Private Sub Worksheet_Calculate()
    Dim Bak, Bak1, Bak2 As Range
    Dim Satir As Long
    Dim Kolon As Long
    Set a = Sheets("Data")
    Set b = Sheets("Bilgi")

    For Each Bak In Alan
        Satir = Bak.Row - Alan.Row + 1
        Kolon = Bak.Column - Alan.Column + 1
     
        If IsError(Bak.Value) Then GoTo HataliHucreDegeri
        If Bak.Value <> Targ(Satir, Kolon) Then
            Targ(Satir, Kolon) = Bak.Value
                b.Select
                son = 1 + Cells(Rows.Count, "A").End(3).Row
                Range("A" & son) = a.Range("A" & Targ(Satir, 1)).Value
                Range("B" & son).Value = a.Range("B" & Targ(Satir, 2)).Value
                Range("C" & son).Value = a.Targ(1, Kolon).Value
                Range("D" & son).Value = Format(Now, "hh:mm:ss")
        End If
HataliHucreDegeri:
    Next
oorEnd Sub
Range ... satıra gelince Error 1004 "Application-defined or object-defined error" hatasını verip duruyor. Belli ki Syntax Error var ama gideremedim. Yardımcı olursanız sevinirim.
Saygılarımla
 
Sayın İşsiz123,
Sizin 4 satırda sonuçlandırdığınızı ben 24 satırda kendime uydurabildim. Bu açıdan sormuştum "kolay bir yolu var mı?" diye.
Çok teşekkür ederim. İnşallah öteki yolu da çözümleyebilirim.
Saygılarımla
 

Ekli dosyalar

Kodları aşağıdaki gibi yapabilirsiniz.
Kod:
Private EskiDeger As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column And Target.Row > 1 Then
       
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sheets("Bilgi").Range("A" & Sheets("Bilgi").Range("A65536").End(3).Row + 1) = Cells(Target.Row, "A")
Sheets("Bilgi").Range("B" & Sheets("Bilgi").Range("B65536").End(3).Row + 1) = Cells(Target.Row, "B")
Sheets("Bilgi").Range("C" & Sheets("Bilgi").Range("C65536").End(3).Row + 1) = Cells(1, Target.Column)
Sheets("Bilgi").Range("D" & Sheets("Bilgi").Range("D65536").End(3).Row + 1) = Format(Now)

End Sub
 
Şimdi daha şahane oldu. Çok teşekkürler. Silinen değeri değil de, sadece yeni değeri yazmak ta mümkün mü, arkadaşım?
Saygılarımla
 
Sayın İşsiz123,
16. mesajdaki soruyu da daha önce yazılmış, tekrar yazmayalım diye sormuştum.
Yine de çok farklı bir çözüm ürettiğiniz ve öğrettiğiniz için teşekkür ederim.
Saygılarımla
 
Geri
Üst