Çalışma kitabı açıldığında, çalışma kitabını açan Microsoft Windows kullanıcısının ismini ve açılış tarihini "Kullanıcı Girişleri" adlı bir sayfaya kaydeder. Sayfa yoksa oluşturduktan sonra kayıt işlemini yapar.
Option Explicit
Sub Auto_Open()
KullaniciGirisiKaydet
End Sub
Sub KullaniciGirisiKaydet()
Dim kontrol As Boolean
Dim sayfa As Worksheet
Dim sonDoluSatir As Long
Dim bosSatir As Long
'--------------------------------------------------
'Eğer yoksa sayfa oluştur, varsa seç.
'--------------------------------------------------
For Each sayfa In Worksheets
If (sayfa.Name <> "Kullanıcı Girişleri") Then
kontrol = False
Else
kontrol = True
End If
Next
If (kontrol = True) Then
Sheets.Add
ActiveSheet.Name = "Kullanıcı Girişleri"
ActiveSheet.Range("A1") = "Kullanıcı"
ActiveSheet.Range("B1") = "Giriş Tarihi"
Else
Worksheets("Kullanıcı Girişleri").Select
End If
'--------------------------------------------------
'Kullanıcı girişini kaydet.
'--------------------------------------------------
sonDoluSatir = Range("A1048576").End(xlUp).Row
bosSatir = sonDoluSatir + 1
Range("A" & bosSatir) = Application.UserName
Range("B" & bosSatir) = DateTime.Now
'--------------------------------------------------
'Sütunları yeniden boyutlandır.
'--------------------------------------------------
Columns("A:B").EntireColumn.AutoFit
End Sub
Option Explicit
'--------------------------------------------------
'Auto_Open özel yordamıyla çalışma kitabı her
'açıldığında kullanıcı girişi bilgilerinin
'kaydedilmesini sağlıyoruz.
'--------------------------------------------------
Sub Auto_Open()
KullaniciGirisiKaydet
End Sub
Sub KullaniciGirisiKaydet()
'--------------------------------------------------
'Kayıt işlemi "Kullanıcı Girişleri" isimli bir
'sayfaya yapılacak. Bu sayfanın olup olmadığı
'kontrol edildikten sonra elde edilen sonuç
'bu değişkene aktarılıyor.
Dim kontrol As Boolean
'--------------------------------------------------
'Çalışma kitabındaki sayfaların isimlerini
'döngü aracılığıyla dinamik olarak kontrol
'etmek için değişken kullanılıyor. İlgili
'çalışma sayfası, "sayfa" değişkenine
'atanıyor, işlemler bu değişken üzerinden
'yapılıyor.
'--------------------------------------------------
Dim sayfa As Worksheet
'--------------------------------------------------
'"Kullanıcı Girişleri" sayfasındaki tabloda
'son dolu satırı bulduktan sonra elde edilen
'sonuç bu değişkene aktarılıyor.
'
'(Çalışma kitabını açan kullanıcının ismi ve
'açılış tarihi olmak üzere iki sütunlu bir
'tablo gibi düşünülebilir.)
Dim sonDoluSatir As Long
'--------------------------------------------------
'Son dolu satırı bulduktan sonraki ilk boş satırı
'da bu değişkene aktarılan sonuç üzerinden takip
'ediyoruz.
'--------------------------------------------------
Dim bosSatir As Long
'--------------------------------------------------
'Eğer yoksa sayfa oluştur, varsa seç.
'--------------------------------------------------
For Each sayfa In Worksheets
If (sayfa.Name <> "Kullanıcı Girişleri") Then
kontrol = False
Else
kontrol = True
End If
Next
'--------------------------------------------------
'Eğer kontrol mantıksal değişkenimizin değeri
'True ise sayfa yok demektir, o halde istenilen
'isimde bir çalışma sayfası oluştur.
'--------------------------------------------------
If (kontrol = True) Then
'--------------------------------------------------
'Yeni bir çalışma sayfası oluştur.
'--------------------------------------------------
Sheets.Add
'--------------------------------------------------
'Oluşturulan çalışma sayfasına isim ver.
'--------------------------------------------------
ActiveSheet.Name = "Kullanıcı Girişleri"
'--------------------------------------------------
'Sütun başlıklarını gir.
'--------------------------------------------------
ActiveSheet.Range("A1") = "Kullanıcı"
ActiveSheet.Range("B1") = "Giriş Tarihi"
Else
'--------------------------------------------------
'Eğer sayfa varsa o sayfayı seç.
'--------------------------------------------------
Worksheets("Kullanıcı Girişleri").Select
End If
'--------------------------------------------------
'Tabloda A sütunundaki en son dolu satırı bul.
'Buradaki durum da şu: A sütunu da B sütunu da
'doldurulduğundan dolayı iki sütunun da son dolu
'satırı aynı satır değeri oluyor. Aynı işlemi
'B sütunu için de yapsak olurdu.
'--------------------------------------------------
sonDoluSatir = Range("A1048576").End(xlUp).Row
'--------------------------------------------------
'Eğer son dolu satırdan sonraki ilk satırı seçersek
'tablonun sonundaki ilk boş satırı bulmuş oluruz.
'--------------------------------------------------
bosSatir = sonDoluSatir + 1
'--------------------------------------------------
'Boş satıra yeni kullanıcı girişi
'bilgilerini kaydet.
'--------------------------------------------------
Range("A" & bosSatir) = Application.UserName
Range("B" & bosSatir) = DateTime.Now
'--------------------------------------------------
'Sütunları yeniden boyutlandır.
'Böylelikle olası taşmalar düzeltilmiş olacak
've verilerin okunması ile ilgili olası
'problemler ortadan kaldırılmış olacak.
'--------------------------------------------------
Columns("A:B").EntireColumn.AutoFit
End Sub