السلام عليكم ورحمة الله وبركاته
أقدم لكم دالة معرفة User-Defined Function تقوم باستخراج تاريخ الميلاد والنوع ومحافظة الميلاد من الرقم القومي (لدولة مصر حيث الرقم القومي مكون من 14 رقم).
استخدام الدالة :
قم بوضع الدالة المعرفة في موديول عادي ثم انتقل لورقة العمل لكتابة المعادلات
بفرض أن الرقم القومي موجود في الخلية A2 ، قم بكتابة المعادلة التالية في الخلية B2 لاستخراج تاريخ الميلاد
=Kh_Date_Gender_Province(A2,1)
والمعادلة التالية لتحديد النوع (ذكر أو أنثى) ضعها في الخلية C2
=Kh_Date_Gender_Province(A2,2)
والمعادلة التالية في الخلية D2 لاستخراج محافظة الميلاد من الرقم القومي وهي بالشكل التالي
=Kh_Date_Gender_Province(A2,3)
وأخيراً إليكم الدالة المعرفة وتوضع كما ذكرنا في موديول عادي :
Function Kh_Date_Gender_Province(MyNumber As Variant, MyTest As Byte)
Dim MyProvinces As Variant
Dim R As Long
Dim YY As String
Dim TY As String * 1
Dim D As String * 2, M As String * 2, Y As String * 2, X As String * 2, XX As String * 2
MyProvinces = Array("01/القاهرة", "02/الإسكندرية", "12/الدقهلية", "13/الشرقية", "14/القليوبية", "15/كفر الشيخ", "16/الغربية", "17/المنوفية", "18/البحيرة", "19/الإسماعيلية", "21/الجيزة", "22/بني سويف", "24/المنيا", "25/أسيوط", "26/سوهاج", "27/قنا", "28/أسوان", "29/الأقصر", "33/مطروح", "23/الفيوم", "88/خارج الجمهورية", "11/دمياط", "04/السويس", "03/بورسعيد", "34/شمال سيناء", "35/جنوب سيناء", "32/الوادي الجديد", "31/البحر الأحمر")
D = Mid(MyNumber, 6, 2)
M = Mid(MyNumber, 4, 2)
Y = Mid(MyNumber, 2, 2)
TY = Left(MyNumber, 1)
Select Case TY
Case "2": YY = "19" & Y
Case "3": YY = "20" & Y
Case Else
End Select
Kh_Date_Gender_Province = ""
On Error GoTo 1
If Not IsNumeric(MyNumber) Or Len(MyNumber) <> 14 Or Len(Trim(MyNumber)) = 0 _
Or Val(M) < 1 Or Val(M) > 12 Or (Val(TY) <> 2 And Val(TY) <> 3) Or Month(DateSerial(YY, M, D)) <> Val(M) Then
Kh_Date_Gender_Province = ""
GoTo 1
End If
If MyTest = 1 Then
If YY <> "" Then Kh_Date_Gender_Province = DateSerial(YY, M, D)
ElseIf MyTest = 2 Then
If Left(Right(MyNumber, 2), 1) Mod 2 = 1 Then YY = "ذكر" Else YY = "أنثى"
Kh_Date_Gender_Province = YY
ElseIf MyTest = 3 Then
X = Mid(MyNumber, 8, 2)
For R = LBound(MyProvinces) To UBound(MyProvinces)
XX = MyProvinces(R)
If X = XX Then
Kh_Date_Gender_Province = Right(MyProvinces(R), Len(MyProvinces(R)) - 3)
Exit For
End If
Next
End If
1: End Function
إعداد / ياسر خليل أبو البراء
الله ينور عليك ومجهود تشكر عليه اللهم اجعله فى ميزان حساناتك
ردحذفاللهم آمين بارك الله فيك على دعائك الطيب
ردحذفجزاكم الله كل الخير عنا
ردحذفوجزيت أخي العزيز بمثل ما دعوت لي وزيادة
ردحذفالسلام عليكم ورحمة الله وبركاته
ردحذفأليست هذه دالة الاستاذ عبدالله باقشير
خبورخير
لماذا لا تنسب الدالة اليه
السلام عليكم أخوك ملوش في الموضوع بس طلبوا مني شغل لان المسئول ربنا يعافيه. أرجوك واحدة واحدة وازاي يعني أضيف الدالة المعرفة لموديول عادي؟
ردحذفرقم القومي خطأ ازاي اعرف الصحيح
ردحذفأنا لقي فازه كرت مش عارف اوصل لصحبه أنا حبعت الرقم لحدرتك يارت تبعتلي الاسم بالكامل جزاك الله خير الرقم القومي25611241700856 ودا رقم تليفون أنا 01221055313
ردحذف30208131700738
ردحذفوالله انت برنس
ردحذف