Excel Yapıştırma özelliğini kapatmak

abnur

Altın Üye
Katılım
5 Eylül 2022
Mesajlar
78
Excel Vers. ve Dili
2021 Türkçe
Altın Üyelik Bitiş Tarihi
27-03-2026
Merhaba,

Excel listeye bağladığım verilerin üzerine listeden seçmek yerine başka yerden veri yapıştırarak veriyi değiştirebiliyorlar. Bunu önlemek için hücre içlerine veri yapıştırmayı engelleyecek bir yöntem arıyorum.
 
Katılım
26 Mart 2025
Mesajlar
4
Excel Vers. ve Dili
2007 TR
Merhaba. Listedeki hücreleri korumayı denediniz mi? Listeniz ayrı bir sayfada bulunsun. Hücreleri seçip, gözden geçir kısmında "Sayfayı koru" seçeneğinden bütün izinleri kaldırırsanız o sayfadaki hiçbir hücreyi seçemezler.
 

abnur

Altın Üye
Katılım
5 Eylül 2022
Mesajlar
78
Excel Vers. ve Dili
2021 Türkçe
Altın Üyelik Bitiş Tarihi
27-03-2026
Merhaba, şu kısmı söylemeyi unutmuşum. Hücre sayfası kilitli veri seçip belirli alanlara yazma yetkileri var. Kişiler listeden seçmek ve veri yazmak yerine başka yerden kopyala yapıştır yaparak listede olmayan verileri ekliyorlar. Bunu önlemek için yapıştırma seçeneğini engellemek istiyorum.

Excel Dosyası
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,866
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Verdiğim linkte birden fazla konu var. Uygun olanı tercih edebilirsiniz.
 
Katılım
6 Mart 2024
Mesajlar
260
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba,

Kurgu :
Sayfada değişiklik olduğunda makro tetiklenecek.
Değişiklik olan hücrede Veri doğruma var ise
veri doğrulama listesindeki veriler kadar döngü
veriler içinde, değişiklik olan hücre değeri hiç yoksa
uyarı ver ve hücreyi temizle.

Kurguda ki açık : birden çok hücreye aynı anda yapıştırma yapılınca da kontrol altına alınmalı

Kodlar Veri doğrulama listelerinin olduğu Sayfanın Kod bölümüne eklenecek
C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dv As Validation
    Dim valList As Variant
    Dim listItems As String
    Dim i As Integer
    Dim refFormula As String
    Dim refRange As Range
    Dim cell As Range
    Dim isValid As Boolean

    ' Eğer birden fazla hücre değişmişse çık
    If Target.Cells.Count > 1 Then Exit Sub

    ' Hedef hücrede veri doğrulama var mı?
    On Error Resume Next
    Set dv = Target.Validation
    On Error GoTo 0

    ' Eğer doğrulama yoksa çık
    If dv Is Nothing Then Exit Sub
 
    ' Doğrulamanın gerçekten bir LİSTE olup olmadığını kontrol et
    On Error Resume Next
    If dv.Type <> xlValidateList Then Exit Sub
    On Error GoTo 0

    ' Veri doğrulama formülünü al
    valList = dv.Formula1
 
    ' Eğer liste doğrudan bir metinse (örneğin: "Elma,Armut,Çilek")
    If Left(valList, 1) <> "=" Then
        ' Listeyi diziye dönüştür
        valList = Split(valList, ",")
     
        ' Diziyi kontrol et
        isValid = False
        For i = LBound(valList) To UBound(valList)
            If Trim(Target.Value) = Trim(valList(i)) Then
                isValid = True
                Exit For
            End If
        Next i

        ' Eğer geçerli bir değer bulunmadıysa
        If Not isValid Then
            Application.EnableEvents = False
            MsgBox "Lütfen listeden geçerli bir değer seçin!", vbExclamation, "Geçersiz Giriş"
            Target.ClearContents ' Hücreyi temizle
            Application.EnableEvents = True
        End If
        Exit Sub
    End If

    ' Eğer liste başka bir sayfadan referanslıysa
    refFormula = Mid(valList, 2) ' "=" işaretini kaldır
 
    ' Referanslı hücreleri almak için Evaluate kullanıyoruz
    On Error Resume Next
    Set refRange = Application.Evaluate(refFormula)
    On Error GoTo 0

    ' Eğer geçerli bir aralık değilse çık
    If refRange Is Nothing Then Exit Sub
 
    ' Listede değeri bulup kontrol et
    For Each cell In refRange
        If cell.Value = Target.Value Then Exit Sub
    Next cell
 
    ' Eğer değer listede yoksa uyarı ver ve hücreyi temizle
    Application.EnableEvents = False
    MsgBox "Lütfen listeden geçerli bir değer seçin!", vbExclamation, "Geçersiz Giriş"
    Target.ClearContents ' Hücreyi temizle
    Application.EnableEvents = True
End Sub
 
Son düzenleme:
Üst