• DİKKAT

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

Çö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
457
Excel Vers. ve Dili
Office 2021 Türkçe
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.
 
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.
 
Ü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.
 
Bir de bu hata yı verdi "Block If without End If"
 
Merhabalar, End sub dan önce End if yazmalısınız
 
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
 
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.
 
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
 
Şimdi tekrar denedim. Bende açılıyor.

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

 
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
 
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
 
Korhan bey doğru yere yerleştirmeyi doğru yapmak nasıl olacak? Anlayamadım
 
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
 
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
 
Alttaki satırların olmaması gerekir.

Private Sub CommandButton2_Click()
Mail_Range_Outlook_Body
 
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
 
Geri
Üst