بسم الله الرحمن الرحيم
اليوم سنشرح عمل شاشة دخول ولكن
باسم مستخدم وكلمة مرور
بسم الله نبدأ
بالشكل الموضح يوجد
المشار لهم بالسهم الأخضر 7 label
السهم الأحمر 1 textbox
السهم الأسود 1 combobox
وزر دخول وزر خروج
وطبعا اتنين image لشعار الشركة
الصورة مصغرة أنقر هنا لرؤيتها بحجمها الطبيعي 790*602
بعد تصميم نفس الشكل السابق
نقوم بعمل شيت جديد اسمه users
الصورة مصغرة أنقر هنا لرؤيتها بحجمها الطبيعي 490*373
كما بالصورة
بعد تسمية الشيت وخصوصا برمجيا مثل التحديد الأحمر
نضيف البيانات كالأتي
الصورة مصغرة أنقر هنا لرؤيتها بحجمها الطبيعي 548*206
نيجي بقي للاكواد
اولا كما تعلمنا في الدرس السابق نقوم بوضع هذه الاكواد في اليوزرفورم
في general))
[p]
CODE
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Const WS_SYSMENU = &H80000
</pre>
في حدث تهيئة الفورم
[p]
CODE
Private Sub UserForm_Initialize()
Dim lngWindow As Long, lFrmHdl As Long
lFrmHdl = FindWindow(vbNullString, Me.Caption)
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
Call DrawMenuBar(lFrmHdl)
End Sub
</pre>
في حدث الاغلاق
[p]
CODE
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If unloadmode = vbFormControlMenu Then
Cancel = True
MsgBox "غير مسموح"
End If
End Sub
</pre>
اما في حدث تنشيط الفورم فنقوم باضافة اكواد ربط الليبل الخاصة ببيانات الشركة بالخلايا التي تحتوي علي البيانات
[p]
CODE
Private Sub UserForm_Activate()
Application.WindowState = xlMaximized
Application.Visible = False
Label1.Caption = users.[e1]
Label2.Caption = users.[e2]
Label3.Caption = users.[e3]
With Me
.Height = Application.Height
.Width = Application.Width
.Left = Application.Left
.Top = Application.Top
End With
End Sub
</pre>
وفي زر الخروج
[p]
CODE
Private Sub CommandButton2_Click()
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
</pre>
تبقي لنا الكود الاهم
وهو زر الادخال
[p]
CODE
Private Sub CommandButton1_Click()
On Error GoTo 86
If Application.WorksheetFunction.VLookup(ComboBox1.Value, users.Range("a2:l0"), 2, 0) = TextBox1.Text Then
Me.Hide
Application.Visible = True
MsgBox ComboBox1.Value & " مرحبا بك/ ", , "elmalak_elhazen_yasser@yahoo.com"
Else
86
Label7= Label7+ 1
MsgBox " لقد استخدمت " & Label7 & " محاولة من اصل 5 محاولات" ,vbCritical, "elmalak_elhazen_yasser@yahoo.com"
If Label7= 5 Then
MsgBox "لقد استنفذت جميع المحاولات"
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
End If
End Sub
</pre>
استخدمنا هنا دالة vlookup للبحث والمقارنة عن المستخدم وكلمة المرور
ان لم يحقق الشرط يتم التحويل الى عدد المحاولات ومنها الى اغلاق البرنامج
وطبعا زي كل مره ننسى نحط كود في حدث فتح الملف
[p]
CODE
Private Sub Workbook_Open()
Userform1.Show
End Sub
</pre>
وطبعا لسه مش ربطنا الكمبوكس اللي فيها اسم المستخدم
عشان نسهل عليكم نعملها بالطريقة التقليدية وبعدين نبقي نعملها باحترافيه شوية
الصورة مصغرة أنقر هنا لرؤيتها بحجمها الطبيعي 692*377
نحدد الكمبوكس ونكتب اسم الشت والرينج اللي فيه اسم المستخدم كما موضح بالصورة المظلل بالاحمر
الى شاشة دخول اخرى باذن الله
مع تحياتي
المرفقات بها شاشة الدخول مع صلاحيات بأكتر من شكل علي الرابط التالي
تحميل الملفات