• DİKKAT

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

Hücre içeriği

muratgunay48

Altın Üye
Katılım
10 Şubat 2010
Mesajlar
1,485
Excel Vers. ve Dili
Office 365 - Türkçe (64 bit)
Arkadaşlar sayın hocalarım, gözden geçir bölümünde sayfa koruması yaparken, hücrelere yazı yazılsın ama silinmesin mümkün mü? Ben göremedim.
Yoka bunun için makro mu gerekir.
Şimdiden teşekkür ederim saygılarımla.
 
Forumda Locked ifadesi ile arama yaparsanız arşiv konularına erişebilirsiniz.

Bazıları;

 
Sub KorumaUygula()
Cells.Locked = False
ActiveSheet.Protect Password:="Şifre", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Bu yöntem, hücrelere yazı yazılmasını sağlamak ve ardından hücrelerin silinmemesini sağlamak için bir çözüm sunar. Ancak, kullanıcılar makro çalıştırma yetkisine sahip olmalıdır ve makro çalıştırma güvenlik ayarlarını etkinleştirmiş olmalıdır.
 
Sub KorumaUygula()
Cells.Locked = False
ActiveSheet.Protect Password:="Şifre", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Bu yöntem, hücrelere yazı yazılmasını sağlamak ve ardından hücrelerin silinmemesini sağlamak için bir çözüm sunar. Ancak, kullanıcılar makro çalıştırma yetkisine sahip olmalıdır ve makro çalıştırma güvenlik ayarlarını etkinleştirmiş olmalıdır.

Hocam deneyeceğim. Umarım doğru anlatabilmişimdir. "Sayfa1"de veri girişi her zaman serbest olacak. Ancak silinemeyecek.
 
Forumda Locked ifadesi ile arama yaparsanız arşiv konularına erişebilirsiniz.

Bazıları;

Hocam ilginize teşekkür ederim. Hepsini kontrol edip deneyeceğim.
 
Merhaba.
Sayfanın kod kısmına kopyalayınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bak As Range
    For Each Bak In Target.Cells
        If Bak.Value = "" Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit For
        End If
    Next
End Sub
 
Merhaba.
Sayfanın kod kısmına kopyalayınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bak As Range
    For Each Bak In Target.Cells
        If Bak.Value = "" Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit For
        End If
    Next
End Sub

Çok teşekkür ederim hocam. Bu tam oldu.
Emeğinize sağlık.
 
Merhaba.
Sayfanın kod kısmına kopyalayınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bak As Range
    For Each Bak In Target.Cells
        If Bak.Value = "" Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit For
        End If
    Next
End Sub

Hocam, tekrar yazdım sizi rahatsız ettim ama ben bu dosyayı, Korhan hocamın yazdığı kodları kullanarak kendi dosyama uyarladım.
Şimdi dosyanın kullanıcıları var, (örneğin Ahmet, Ali, Mehmet)
Bu kullanıcılar giriş yapıyor. Giriş yapanı kaydediyor.
Korhan hocamın kodlarıyla da ne değişiklik yaptı onu kaydediyor.
Aslında sayfa korumaya alsak kolay olurdu ama giriş yapan kullanıcı adı ve ne yaptığını yazamıyor. Hata veriyor. Sayfa korumalı yazılamadı diyor.
Ben bunun için istemiştim.
Yazdığınız kod mükemmel çalışıyor.
Tek bir şey dışında, yazılıyor silinemiyor. Ancak üzerine başka bir şey yazılabiliyor.
Bizim elamanlar zaten birbirine suç atmayı çok sever. A3 hücresindeki giriş yapan kullanıcı adını değiştirir.
Bunun önüne geçmek mümkün mü? Bir kere yazılsın tamam.
Biraz uzun oldu özür dilerim. Umarım doğru anlatabilmişimdir.
Teşekkür ederim.
Saygılarımla.
 
Doğru anladıysam aşağıdaki işinizi görecektir.

Kod:
Dim Kontrol As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bak As Range
    For Each Bak In Target.Cells
        If Bak.Value = "" Or Kontrol Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit For
        End If
    Next
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then
        Kontrol = True
    ElseIf Target.Value <> "" Then
        Kontrol = True
    Else
        Kontrol = False
    End If
End Sub
 
Doğru anladıysam aşağıdaki işinizi görecektir.

Kod:
Dim Kontrol As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bak As Range
    For Each Bak In Target.Cells
        If Bak.Value = "" Or Kontrol Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit For
        End If
    Next
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then
        Kontrol = True
    ElseIf Target.Value <> "" Then
        Kontrol = True
    Else
        Kontrol = False
    End If
End Sub

Evet hocam. Böylece içerik değiştiremezler.
Çok teşekkür ederim. Emeğinize sağlık. Var olun.
 
Geri
Üst