السلام عليكم ورحمة الله وبركاته
أقدم لكم بطريقة مبسطة
كيفية إنشاء فورم لعرض الصور للأشخاص من خلال النقر على اسم الشخص في الليست بوكس
بفرض أن لديك في العمود الأول مجموعة من الأسماء ، ولديك مجلد يحتوي على صور لهؤلاء الأشخاص ، والمطلوب هو أن تعرض صورة الشخص عند اختياره من أداة الليست بوكس أو صندوق القائمة ListBox
خطوات العمل :
* قم بإدراج فورم من خلال قائمة Insert ثم UserForm
* قم بإظهار صندوق الأدوات إذا لم يكن ظاهراً لديك من خلال قائمة View ثم Toolbox
* قم برسم أداة الليس بوكس ListBox كما هو موضح بالصورة التالية
قم برسم أداة الصورة Image كما هو موضح بالصورة التالية
* الخطوة الأخيرة ضع الكود التالي في حدث الفورم (كليك يمين على اسم الفورم من نافذة المشروع ثم اختر View Code ثم الصق الكود)* الخطوة الأخيرة ضع الكود التالي في حدث الفورم (كليك يمين على اسم الفورم من نافذة المشروع ثم اختر View Code ثم الصق الكود)
CODE
Private Sub UserForm_Initialize()
'الإعلان عن متغير من النوع نطاق
Dim rng As Range
'لآخر خلية بالعمود [A2] تعيين قيمة للمتغير ليساوي النطاق من أول الخلية
Set rng = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
'تعبئة الليست بوكس بقيم النطاق أي بالأسماء
ListBox1.List = rng.Value
End Sub
Private Sub listBox1_Click()
'الإعلان عن المتغير من النوع النصي ليحمل مسار الصور
Dim strPath As String
'تعيين مسار المجلد الذي يحتوي على الصور
strPath = ThisWorkbook.Path & "Photos"
'جملة لتجنب حدوث خطأ في حالة عدم وجود اسم معين
On Error Resume Next
'إظهار صورة في أداة الصورة ومسار الصورة كما هو موضح
'يتم تحميل الصورة من مسار المجلد الذي يحتوي الصـور
'مضاف إليه اسـم الصورة بالامتداد الخاص بها
Image1.Picture = LoadPicture(strPath & ListBox1.Value & ".jpg")
'في حالة عدم حدوث خطأ يتم الخروج من الإجراء هنا
If Err = 0 Then Exit Sub
'أما إذا حدث خطأ تظهر في أداة الصورة صورة يتم وضعها
'تشير إلى أنه لا توجد صورة لهذا الشخص
Image1.Picture = LoadPicture(strPath & "NoPhoto.Jpg")
End Sub
رابط الملف من هنا
إعداد وتقديم / ياسر خليل أبو البراء