Çözüldü Yapılan kayıt zamanını kaydeden koda işlemi yapan kişi eklenebilir mi?

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Merhaba Arkadaşlar,
Belirlenen satır ve hücrelerde yapılan son değişikliğin zamanını kaydeden aşağıdaki kod kullanıyorum buna değişikliği yapan kişi eklenebilir mi?

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then Cells(Target.Row, "T") = Now
End Sub

"20.06.2024 15:11" formata ofis kullanıcısı olan kişi eklenerek "20.06.2024 15:11 Ahmet" formatı eklememiz mümkün mü?
Teşekkürler.
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
559
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then
Cells(Target.Row, "T") = Environ("UserName") & " - " & Now
End Sub

Açıklama:
Environ("UserName"): Bu, geçerli kullanıcının adını döndüren bir VBA fonksiyonudur.
& operatörü: Bu operatör, iki metin dizesini birleştirmek için kullanılır.
Now: Bu, mevcut tarihi ve saati döndüren bir VBA fonksiyonudur.

Notlar:
Bu kod, B8:R10645 aralığındaki hücrelerde yapılan değişiklikleri izler. Bu aralığı, izlemek istediğiniz hücre aralığıyla değiştirebilirsiniz.
Kullanıcı adının hücreye nasıl biçimlendirileceğini özelleştirmek isterseniz, Cells(Target.Row, "T") satırını Cells(Target.Row, "T").NumberFormat = "@YYYY-mm-dd hh:mm;@\n""Ahmet""" gibi bir biçimlendirme kodu ile değiştirebilirsiniz. Bu, tarihi ve saati "2024-06-20 15:11;Ahmet" formatında gösterecektir.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim UserName As String
UserName = Environ("USERNAME")

If Not Intersect(Target, [B8:R10645]) Is Nothing Then
Cells(Target.Row, "T") = Now
Cells(Target.Row, "U") = UserName
End If
End Sub

Bu kodda, Environ("USERNAME") fonksiyonu kullanılarak kullanıcı adı alınıyor ve değişiklik yapılan satırın U sütununa kaydediliyor. T sütununda değişiklik zamanını, U sütununda ise değişikliği yapan kullanıcıyı göreceksiniz.

Bu kodu Excel VBA modülüne ekledikten sonra, belirlediğiniz aralıktaki hücrelerde herhangi bir değişiklik yapıldığında, o satırdaki T ve U sütunları otomatik olarak güncellenecektir.
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Üstadım ilginize açıklayıcı ve öğretici cevabınıza teşekkür ederim.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then
Cells(Target.Row, "T") = Environ("UserName") & " - " & Now
End Sub
Aynen kod kısmına kopyaladım yalnız "This command will stop the debugger" şeklinde hata veriyor.
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Bir de bu hata yı verdi "Block If without End If"
 

byfika

Altın Üye
Altın Üye
Katılım
15 Ağustos 2009
Mesajlar
499
Excel Vers. ve Dili
Excel Vers. ve Dili : Ofis 2016 Tr
Altın Üyelik Bitiş Tarihi
13.09.2027
Merhabalar, End sub dan önce End if yazmalısınız
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Sayın Byfika teşekkür ederim çalıştı
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Hücrenin içine kullanıcı adı eklendiğinde metin olarak kabul ettiği için doğal olarak kendisini referans alarak hesaplama yapan diğer hücrelerde hata verdi.
Bende kullanıcı adı kısmını yanındaki sütuna almak suretiyle küçük bir değişiklik yapmak zorunda kaldım.
Forumdaki ilgilenen diğer arkadaşlara faydası olabilir belki diye son hali şu şekilde;

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then
Cells(Target.Row, "T") = Now
Cells(Target.Row, "U") = Environ("UserName")
End If
End Sub
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Environ("UserName") bu oturum sahibini veriyor benim istediğimde buydu ancak office kullanıcısını getirmek isteyen olursa nasıl değiştirmesi gerekirdi.
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Arkadaşlar "T" ve "U" sütunlarında zaman ve kullanıcı kaydına müdahale edilememesi için hücreyi kilitleyerek sayfayı korumalı yaptığımda hata veriyor
Bunu yapmazsam elle değiştirileceği için çok anlamlı olmayacak ne yapmam gerekir
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Korhan Bey merhaba link açılmıyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Şimdi tekrar denedim. Bende açılıyor.

Yine de aşağıdaki açık linkleri inceleyebilirsiniz.

 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Korhan Bey sizin bir çözümünüzü buldum bendeki kodun altına iliştirdim hata veriyor nerde hata yapmış olabilirim

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then
Cells(Target.Row, "T") = Now
Cells(Target.Row, "U") = Environ("UserName")
Private Sub CommandButton2_Click()
ActiveSheet.Unprotect 1
Mail_Range_Outlook_Body
ActiveSheet.Protect 1
End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Korumalı bir sayfada işlem yapmak için önce korumayı kaldırmak gerekir..

Alttaki satır korumayı kaldıran kod satırıdır. Ama siz bundan önce bazı işlemler yaptırmaya çalışıyorsunuz. Sayfa korumalı olduğu için hata alıyorsunuz. Doğal olarak alttaki satırı kullandığınız kod bloğunda uygun yere yerleştirmeniz gerekiyor. Eğer bu işlemi doğru yaparsanız sorun çıkmaması gerekir.

ActiveSheet.Unprotect 1
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Korhan bey doğru yere yerleştirmeyi doğru yapmak nasıl olacak? Anlayamadım
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then​
ActiveSheet.Unprotect 1
Cells(Target.Row, "T") = Now​
Cells(Target.Row, "U") = Environ("UserName")​
Private Sub CommandButton2_Click()​
Mail_Range_Outlook_Body​
ActiveSheet.Protect 1
End If​
End Sub
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Sayın yusuf1284 denedim hata veriyor
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Bu kod çok güzel çalışıyordu aslında tek problem sayfanın korunarak ilgili hücrelerin kilitlenmesi

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B8:R10645]) Is Nothing Then
Cells(Target.Row, "T") = Now
Cells(Target.Row, "U") = Environ("UserName")
End If
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alttaki satırların olmaması gerekir.

Private Sub CommandButton2_Click()
Mail_Range_Outlook_Body
 

ATEMİ

Altın Üye
Katılım
9 Ocak 2006
Mesajlar
351
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
25-06-2026
Korhan bey harikasınız teşekkür ederim tam istediğim gibi çalışıyor.
Emeği geçen diğer arkadaşlara da teşekkür ediyorum sağlıcakla kalın
 
Üst