Excel VBA Blog

2011-02-26

E-posta adresi sınama- RegExp nesnesi

Filed under: Uncategorized — Etiketler:, , , , , , , — dutali @ 6:48 am

Bu yazıyı exceltr.net altında okumak için  tıklayın


 

Merhaba,
Bu yazıda sizinle bir e-posta alanına girilen metnin e-posta kurallarına uygun olup olmadığını kontrol eden bir fonksiyon yazıcaz.
Herhangi bir dille böyle bir kontrol yapmak isteseydiniz bulacağınız en etkili araç “düzenli ifadeler” (regular expression) olurdu. VBA içerisinde de bu amaçla bir nesne var : VBScript RegExp

Fonksiyonumuz da , e-posta adresinin kurallı olup olmadığını kontrol etmek için regular expression kullanıyor.
Regular Expression hakkında bilgi sahibi değilseniz : http://en.wikipedia.org/wiki/Regular_expression .

ve fonksiyonumuz :

Private Function EPostaDogrula(Value As String) As Boolean  
    Dim RE As Object
    Set RE = CreateObject("vbscript.RegExp")
    RE.Pattern = "^[a-zA-Z0-9\._-]+@([a-zA-Z0-9_-]+\.)+([a-zA-Z]{2,3})$"
    EPostaDogrula = RE.Test(Value)
    Set RE = Nothing
End Function

TC Kimlik numarası sınama

Filed under: Excel, VBA — Etiketler:, , , , — dutali @ 6:03 am

Bu yazıyı exceltr.net altında okumak için  tıklayın


 

Merhaba,

Bu yazıda size TC Kimlik numarası için bir iki basit kontrol yöntemi göstereceğim.
Sınamadan kastım resmi makamlarla bağlantı kurarak sınamak değil tabii ki. Her TC Kimlik numarasının sağladığı basit birkaç matematiksel şart var.
Bu şartlara bakarak bir sayının TC Kimlik numarası olup olamayacağını görebilirsiniz. Fakat tabii ki ilgili şartları sağlayan her sayı, bir şahsa verilmiş TC Kimlik no değildir. Biz algoritmaya uymayanları eliyoruz.

Peki ne derecede işimize yarar bu algoritma? Kafadan uydurulmuş bir numara çoook büyük olasılıkla testi geçemez. Bir iki rakamı hatalı verilmiş gerçek bir TC Kimlik numarası da çok küçük bir olasılıkla algoritmayı geçecek şansa sahip olabilir. Özellikle veri girişi hatalarını önemli ölçüde azaltacaktır.

Lafı fazla uzatmadan algoritmayı kısaca anlatayım ve fonksiyonu vereyim:
Fonksiyona, TCKimlik numarası olup olmadığı kontrol edilmek istenen sayı, string olarak veriliyor (string olacak tabii. sebebini sormayın)
TCKimlik numarası 11 haneli olmalıdır
TCKimlik numarasının son hanesi tek sayı olamaz
TCKimlik numarasının ilk 10 rakamının toplamının 10 a bölümünden kalan sayı, 11. rakamı verir
bir iki şartı daha var ama fonksiyonda yok. Talep gelirse eklerim

Ayrıca fonksiyonun altında bir de yardımcı fonksiyon var. onun amacı da stringin içinde dışında boşluklar var ise onları kırpmak. böylece temiz bir string oluşturmuş oluruz.

tc kimlik test:

Private Function TCKimlikSinama(strTc As String) As Boolean   
 ' Programcı: Ebubekir Çelik .
' https://exceltr.wordpress.com
    TCKimlikSinama = True
    If Len(strTc) = 0 Then
        TCKimlikSinama = True
        Exit Function
    End If

    If Len(strTc)  11 Then
        TCKimlikSinama = False
        Exit Function
    End If


    Dim iTop As Integer, i As Integer
    iTop = 0
    For i = 1 To 10
        iTop = iTop + CInt(Mid(strTc, i, 1))
    Next


    If iTop Mod 10  CInt(Right(strTc, 1)) Then
        TCKimlikSinama = False
        Exit Function

    End If

    If CInt(Right(strTc, 1)) Mod 2 = 1 Then
        TCKimlikSinama = False
        Exit Function
    End If

End Function

metin içerisindeki boşluk karakterlerini kırpmak için :

Function BoslukKirp(str As String) As String

    Dim i As Integer
    Dim strKr As String, strLeft As String, strRight As String
    Dim strBosluk As String
    Dim iLngt As Integer

    strBosluk = " "
    strLeft = ""
    strRight = ""

    iLngt = Len(str)

    If Len(str) > 0 Then
        For i = 2 To iLngt
            If Mid(str, i, 1) = strBosluk Then
                strLeft = Left(str, i - 1)
                strRight = Mid(str, i + 1)
                str = strLeft & strRight
                iLngt = iLngt - 1

            End If
        Next

    End If

    BoslukKirp = str
End Function

WordPress.com'da ücretsiz bir web sitesi ya da blog oluşturun.