• DİKKAT

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

Hücre Veri Girişi Engelleme

  • Konbuyu başlatan Konbuyu başlatan schlecht
  • Başlangıç tarihi Başlangıç tarihi
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Merhaba, A1 hücresine @ işareti yazılmaz ise giriş yapılmamasını engellemek istiyorum. Yardımcı olursanız sevinirim.
 
A1 hücresine "@" ile başlayan bir veri girilmezse, uyarı verilsin ..... demek istiyorsunuz. Doğru mu anladım ?

Eğer öyleyse;

- Söz konusu A1 hücresini Metin (Text) olarak biçimlendirin,

-Aşağıdaki kodu, ilgili sayfa modülüne ekleyin,

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Not Left(Range("A1").Text, 1) = "@" Then MsgBox "Oppppssss....."
    End If
End Sub

.
 
Haluk Bey, @ ile başlayan değil @ içermeyen, mail adresi yazılması zorunlu olması için.
 
a1 seçili iken veri doğrulama yapın ve özeli seçerek aşağıdaki formülü deneyin gerekli uyarı ve düzenlemeleri yapıp denermisiniz.
=BUL("@";A1)>0
 
Yani; A1 hücresine yazılan verinin bir e-posta adresi olup olmadığını kontrol etmek istiyorsunuz .... öyle mi?

.
 
Resmi inceleyiniz.

Uygulama yaparken formül hata verecektir. Tamam diyerek işlemi tamamlayın.

Ayrıca "Hata Uyarısı" penceresine dilediğiniz mesajı yazarak gelen uyarı mesajını kişiselleştirebilirsiniz.

1546935476335.png
 
Bence; girilen verinin içerisinde "@" olsa bile, iyi kötü bir kontrol yaparak bu verinin geçerli bir e-posta adresi olup olmadığını da kontrol etmek iyi olur....


Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objRegEx As Object
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Range("A1") = Empty Then Exit Sub
        Set objRegEx = CreateObject("VBscript.RegExp")
        With objRegEx
            .Pattern = "^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,3})$"
            .Global = True
            If Not .Test(Range("A1").Text) Then
                MsgBox "Geçerli bir e-posta adresi girin!", vbCritical
                Range("A1") = Empty
                Range("A1").Select
            End If
        End With
        Set objRegEx = Nothing
    End If
End Sub

.
 
Son düzenleme:
Haluk Hocam yine hünerinizi konuşturmuşsunuz. :D Elinize sağlık.
 
Haluk Hocam, "Geçerli bir e-posta adresi girin! uyarısından sonra uygun olmayan metni hücrede bırakıyor. Örneğin Haluk yazdım hücreye
"Geçerli bir e-posta adresi girin!" uyarısı çıktı tamam a bastıktan sonra Haluk yazısı hücrede kaldı. Engellemedi sadece uyarı verdi.
 
Hocamın izniyle denermisiniz.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim objRegEx As Object
If Not Intersect(Target, Range("A1")) Is Nothing Then
Set objRegEx = CreateObject("VBscript.RegExp")
With objRegEx
.Pattern = "^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,3})$"
.Global = True
If Not .Test(Range("A1").Text) Then
MsgBox "Geçerli bir e-posta adresi girin!", vbCritical
Range("A1").Text=""
End If
End With
Set objRegEx = Nothing
End If
End Sub
 
7 No'lu mesajdaki kodu güncelledim, onu kullanın...

.
 
Haluk Bey çok teşekkür ederim. Elinize sağlık.
 
Geri
Üst