نبا زيد قام بنشر سبتمبر 13 قام بنشر سبتمبر 13 شرح هذه الفقره\ data = wsSource.Range(foundCell.Offset(0, 1), foundCell.Offset(0, 10)).Value data = wsSource.Range(foundCell.Offset(0, 10), foundCell.Offset(0, 19)).Value data = wsSource.Range(foundCell.Offset(0, 28), foundCell.Offset(0, 38)).Value الموجودة في هذا الملف شرح.xlsm
أفضل إجابة عبدالله بشير عبدالله قام بنشر سبتمبر 13 أفضل إجابة قام بنشر سبتمبر 13 تفضل الشرح بالتفصيل الشرح استعنت بالذكاء الاصطناعي الهدف من هذا الكود هو البحث عن اسم معين في ورقة عمل تسمى “السجل” وعند العثور عليه، نسخ مجموعة من البيانات المرتبطة بهذا الاسم إلى ورقة عمل أخرى تسمى “استدعاء”. إليك الخطوات الرئيسية التي يقوم بها الكود لتحقيق هذا الهدف: مراقبة التغييرات في الخلية B6 في ورقة “استدعاء”. البحث عن الاسم المدخل في الخلية B6 داخل العمود B في ورقة “السجل”. نسخ البيانات المرتبطة بالاسم الموجود في ورقة “السجل” إلى مواقع محددة في ورقة “استدعاء”. إذا تم العثور على الاسم، يتم نسخ البيانات إلى الصفوف 9، 12، 15، و18 في ورقة “استدعاء”. إذا لم يتم العثور على الاسم، يتم عرض رسالة تفيد بأن الاسم غير موجود في السجل If Not foundCell Is Nothing Then هذا السطر يتحقق مما إذا كانت الخلية foundCell تحتوي على قيمة أم لا. إذا كانت foundCell تحتوي على قيمة، فهذا يعني أن الاسم الذي تم البحث عنه قد تم العثور عليه في العمود B في الورقة “السجل”. إذا لم يتم العثور على الاسم، فإن foundCell ستكون Nothing. نسخ البيانات إلى الصف 9: data = wsSource.Range(foundCell.Offset(0, 1), foundCell.Offset(0, 10)).Value wsTarget.Range("A9:I9").Value = data foundCell.Offset(0, 1) تعني الانتقال من الخلية التي تم العثور عليها بمقدار عمود واحد إلى اليمين. foundCell.Offset(0, 10) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 10 أعمدة إلى اليمين. يتم نسخ البيانات من العمود الثاني إلى العمود الحادي عشر في الصف الذي تم العثور فيه على الاسم إلى الصف 9 في الورقة “استدعاء”. نسخ البيانات إلى الصف 12: data = wsSource.Range(foundCell.Offset(0, 10), foundCell.Offset(0, 19)).Value wsTarget.Range("A12:I12").Value = data foundCell.Offset(0, 10) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 10 أعمدة إلى اليمين. foundCell.Offset(0, 19) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 19 عمودًا إلى اليمين. يتم نسخ البيانات من العمود الحادي عشر إلى العمود العشرين في الصف الذي تم العثور فيه على الاسم إلى الصف 12 في الورقة “استدعاء”. نسخ البيانات إلى الصف 15: data = wsSource.Range(foundCell.Offset(0, 19), foundCell.Offset(0, 28)).Value wsTarget.Range("A15:I15").Value = data foundCell.Offset(0, 19) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 19 عمودًا إلى اليمين. foundCell.Offset(0, 28) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 28 عمودًا إلى اليمين. يتم نسخ البيانات من العمود العشرين إلى العمود التاسع والعشرين في الصف الذي تم العثور فيه على الاسم إلى الصف 15 في الورقة “استدعاء”. نسخ البيانات إلى الصف 18: data = wsSource.Range(foundCell.Offset(0, 28), foundCell.Offset(0, 38)).Value wsTarget.Range("A18:I18").Value = data foundCell.Offset(0, 28) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 28 عمودًا إلى اليمين. foundCell.Offset(0, 38) تعني الانتقال من الخلية التي تم العثور عليها بمقدار 38 عمودًا إلى اليمين. يتم نسخ البيانات من العمود التاسع والعشرين إلى العمود الثامن والثلاثين في الصف الذي تم العثور فيه على الاسم إلى الصف 18 في الورقة “استدعاء”. إذا لم يتم العثور على الاسم: Else MsgBox "الاسم غير موجود في السجل." End If إذا لم يتم العثور على الاسم، يتم عرض رسالة تفيد بأن الاسم غير موجود في السجل 1 1
عبدالله بشير عبدالله قام بنشر سبتمبر 13 قام بنشر سبتمبر 13 تعديل بسيط اي كلمة يمين في الشرح غيرها يسار
محمد هشام. قام بنشر سبتمبر 13 قام بنشر سبتمبر 13 (معدل) عبد إذن أخونا الفاضل @عبدالله بشير عبدالله بطريقة مختصرة Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$6" Then Application.ScreenUpdating = False Dim f As Worksheet, WS As Worksheet, search As String, tmp As Range, Lr As Long, i As Integer Set f = Sheets("السجل") Set WS = Sheets("استدعاء") search = WS.Range("B6").Value If search = "" Then Exit Sub Lr = f.Cells(f.Rows.Count, "B").End(xlUp).Row Set tmp = f.Range("B2:B" & Lr).Find(search, LookIn:=xlValues, LookAt:=xlWhole) If Not tmp Is Nothing Then For i = 0 To 3 WS.Range("A" & 9 + i * 3 & ":I" & 9 + i * 3).Value = _ f.Range(tmp.Offset(0, i * 9 + 1), tmp.Offset(0, (i + 1) * 9)).Value Next i Else MsgBox "الإسم غير موجود في السجل" End If Application.ScreenUpdating = True End If End Sub OR If Not tmp Is Nothing Then For i = 1 To 4 '(i - 1) * 9 لإزاحة النطاق المنسوخ 9 أعمدة في كل مرة '(i - 1) * 3 تحريك الصفوف بمقدار 3 صفوف في كل مرة WS.Range("A" & 9 + (i - 1) * 3 & ":I" & 9 + (i - 1) * 3).Value = _ f.Range(tmp.Offset(0, (i - 1) * 9 + 1), tmp.Offset(0, i * 9)).Value Next i Else تم تعديل سبتمبر 13 بواسطه محمد هشام. 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.