Dosyada Değişiklik Olduğunu Hissetme

Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba arkadaşlar. Bir excel dosyasını açtıktan sonra bazı işlemler yapılır. Save işlemi yapılınca Değişiklik tarihi update olur. Buraya kadar tamam.

Dosya açıldığında herhangi bir hücreye bir giriş olmuşsa bunu makro ile anlamak (hissetmek) mümkün mü ? Yani makro çalıştırıldığında nerede ne değişmiş değil, sadece bu dosyada açıldıktan sonra "herhangi bir hücreye giriş olmuştur" u hissetmek/raporlamak/mesaj iletisi gibi bildirmek mümkün mü ?
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
Aşağıdaki kodu Thisworkbook'a yazın.

Kod:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "Değişti"
End Sub
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,375
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba,

Dosyada değişiklik yaptıktan sonra ve kaydettikten sonra çalıştırıp deneyin.
Sanırım istediğiniz böyle birşey..

Kod:
Sub test()
    MsgBox ThisWorkbook.Saved
End Sub
 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın dEdE ilginiz için çok teşekkürler. Kodu şu şekilde revize edebilir misiniz ? Her girişte değil de, makro tuşuna basılınca bir kere yapmak ve bu değişim olduğunu A1 hücresine yazmak ?

Böyle bir değişiklik olabilir mi ?
 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın Zeki Gürsoy. Kod çok güzel. Sadece True veya False ibaresinin A1 hücresine yazılması sağlanabilir mi ? Ben denedim beceremedim !!!
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Sayın Gürsoy'un Kodu nu şoyle değiştirdim.

Sub test()
[A1] = ThisWorkbook.Saved
End Sub
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,375
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Sayın Zeki Gürsoy. Kod çok güzel. Sadece True veya False ibaresinin A1 hücresine yazılması sağlanabilir mi ? Ben denedim beceremedim !!!
Bence bunu fonksiyon olarak kullanın.

Kod:
Function Is_Dirty()
    Is_Dirty = iif(ThisWorkbook.Saved, "Değişiklik yok", _
                 "Değişiklik yapılmış")
End Function

Sub test ()
   [a1]=Is_Dirty
End Sub
 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Çok teşekkür ederim sayın dEdE. Sağlıcakla kalın, başarılarınızın devamını dilerim.
 
Katılım
17 Ekim 2005
Mesajlar
288
Excel Vers. ve Dili
excel 2010 türkçe
peki kayıt yapan değişiklik yapan pc adını tarihini ve saatini yazabilirmi bir köşeye ? Böyle birsey mümkünmü ?
 
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın dEdE, sayın Zeki Gürsoy, sayın ozgretmen; yardımlarınız ve ilginiz için çok teşekkür ederim. Sayenizde kendimde yeni çığırlar açtım. Sağlıcakla kalın.
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
peki kayıt yapan değişiklik yapan pc adını tarihini ve saatini yazabilirmi bir köşeye ? Böyle birsey mümkünmü ?
Merhaba,
Şöyle birşeyler yaptım ama, Değişiklik yok yazınca değişiklik yapılmış oluyor. Üstadlar el atarsa daha güzel kodlar çıkar umarım.
Saygılar.

Kod:
Sub DegisiklikVarmı()
   [a1] = IIf(ThisWorkbook.Saved, "Değişiklik yok", "Değişiklik yapılmış")
   pc_adı = Split(Environ(4), "=")
   [b1] = pc_adı(1)
   [c1] = IIf(ThisWorkbook.Saved, "", Date)
   [d1] = IIf(ThisWorkbook.Saved, "", Time)
End Sub
 

Ayhan Ercan

Özel Üye
Katılım
10 Ağustos 2005
Mesajlar
1,571
Excel Vers. ve Dili
Microsoft 365- Türkçe
Merhaba

sayın dEdE bence uzaklara gitmişsiniz. Ben olsam bunu BeforeSave olayına yazardım.

Kayıt yapıldığı zaman kim kayıt yaptıysa o anki tarih ve saat isteniyor herhalde.
Birde affınıza sığınarak,
Environ olayını pek bilmiyorum. (4) bende başka sonuç verdi. bende aşağıdaki gibi yazdım.

ThisWorkbook'a
Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
pc_adi = Split(Environ(5), "=")
Sheets("Sayfa1").[a1] = "Değişiklik Yapılmış"
Sheets("Sayfa1").[b1] = pc_adi(1)
Sheets("Sayfa1").[c1] = Date
Sheets("Sayfa1").[d1] = Time
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,491
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Bende Environ için örnek vereyim.

Kod:
Sub EnvironEnviron()
    MsgBox "Kullanıcı Adı : " & Environ("UserName")
    MsgBox "Bilgisayar Adı : " & Environ("ComputerName")
End Sub
Environ ile öğrenebileceğimiz değerleri görebiliriz.

Kod:
Sub EnvironEnviron()
For i = 1 To 30
        Cells(i, "A") = Environ(i)
Next i
End Sub
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,

Boşuna demedim,
Üstadlar el atarsa daha güzel kodlar çıkar umarım.
diye. :)

Environ olayını pek bilmiyorum. (4) bende başka sonuç verdi. bende aşağıdaki gibi yazdım.
Environ için aşağıdaki linkte Sayın Levent MENTEŞOĞLU nun 8. sıradaki mesajına bakabilirsiniz. Ben de oradan öğrendim.


http://www.excel.web.tr/f48/goreceli-dosya-yolu-var-m-t62535.html

Saygılar.
 
Üst