skyblue قام بنشر أكتوبر 11, 2006 قام بنشر أكتوبر 11, 2006 السلام عليكم ورحمة الله وبركاته وبعد : في الملف المرفق يوجد كود يعمل بالزر ارجوا من الاخوان التعديل على الكود حتى يعمل الكود اليا
علي السحيب قام بنشر أكتوبر 11, 2006 قام بنشر أكتوبر 11, 2006 شاهد المرفق، If_in_VBA___Worksheet_Function.rar
skyblue قام بنشر أكتوبر 11, 2006 الكاتب قام بنشر أكتوبر 11, 2006 استاذي الفاضل :علي بن حسين السحيب المحترم يااستاذ على اثابك الله بالجنة وجعلك انت وذريتك من السعداء في الدنيا والاخرة المعذرة لقد ارقفت لك الملف بالخطأ . فانا اقصد هذا الملف المرفق :
علي السحيب قام بنشر أكتوبر 11, 2006 قام بنشر أكتوبر 11, 2006 شاهد المرفق والذي يحتوي على الكود التالي: Private Sub Worksheet_Change(ByVal Target As Range) TA = Target.Address If TA = "$AE$20" Or TA = "$AE$21" Then If [AE20] = 1 And [AE21] = 2 Then [C17] = 7 [C18] = 2 [C19] = 5 [C20] = 4 [B17] = 10 [B18] = 10 [B19] = 60 [B20] = 60 ElseIf [AE21] = 0 And [AE20] = 1 Then [C17] = 2 [C18] = 5 [C19] = 4 [C20] = "" [B17] = 10 [B18] = 60 [B19] = 60 [B20] = "" ElseIf [AE20] = 0 And [AE21] = 2 Then [C17] = 1 [C18] = 5 [C19] = 4 [C20] = "" [B17] = 10 [B18] = 60 [B19] = 60 [B20] = "" ElseIf [AE20] = 0 And [AE21] = 0 Then [C17] = "" [C18] = "" [C19] = "" [C20] = "" [B17] = "" [B18] = "" [B19] = "" [B20] = "" End If End If End Sub شاهد المرفق، If_Function_in_VBA.rar
skyblue قام بنشر أكتوبر 11, 2006 الكاتب قام بنشر أكتوبر 11, 2006 يحفظك ربي يااستاذ : علي السحيب فعلا انا عاجز عن الشكر وماادري ايش اقولك لو قلت مكانك في عيوننا اكون قد انقصت في حقك والله العظيم اني احبك في الله وانشاء الله هذه الاعمال التي خدمت بها الناس تكون لك صدقة جارية لك ودرءا للشر ومكانة الشخص اللي يسهل امور الناس مكانة عظيمة وبها حديث . اللهم بهذه الليالي المباركة ان تغفر لاخونا على بن حسين السحيب وتسهل امره وتطيل في عمره وتجعله من السعداء تحياتي
skyblue قام بنشر أكتوبر 14, 2006 الكاتب قام بنشر أكتوبر 14, 2006 استاذي الفاضل :علي السحيب لقد حاولت ان اضيف كود يخص vlookup الى ملفي لكن الكود لم يقبل معي واصبح يظهر لي ان هناك خطأ . امل التكرم بالتعديل على الملف وتقبل تحياتي الغالية لك مرفق ملف :
علي السحيب قام بنشر أكتوبر 16, 2006 قام بنشر أكتوبر 16, 2006 (معدل) أولاً للمعلومية .. لا نستطيع إدراج كودين تحت متغير واحد كالذي قمت أنت بعمله في المرفق الموجود في مشاركتك السابقة .. لذا كان لا بد من دمج الكودين تحت نفس المتغير .. كما هو واضح في الكود التالي: ثانياً: لا حظ الإختصار الذي قمنا به للدالة VLOOKUP .. فبدلاً من تكرار الدالة قرابة العشرين مره .. أستعضنا عن ذلك بإستخدام التعليمة For و Next .. وتم تطبيق نفس الفكرة على مشاركاتي السابقة حول هذا الموضوع .. والموجود على الرابط التالي: http://www.officena.net/ib/index.php?showtopic=13916 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next TA = Target.Address If TA = "$AE$20" Or TA = "$AE$21" Then If [AE20] = 1 And [AE21] = 2 Then [C17] = 7 [C18] = 2 [C19] = 5 [C20] = 4 [B17] = 10 [B18] = 10 [B19] = 60 [B20] = 60 ElseIf [AE21] = 0 And [AE20] = 1 Then [C17] = 2 [C18] = 5 [C19] = 4 [C20] = "" [B17] = 10 [B18] = 60 [B19] = 60 [B20] = "" ElseIf [AE20] = 0 And [AE21] = 2 Then [C17] = 1 [C18] = 5 [C19] = 4 [C20] = "" [B17] = 10 [B18] = 60 [B19] = 60 [B20] = "" ElseIf [AE20] = 0 And [AE21] = 0 Then [C17] = "" [C18] = "" [C19] = "" [C20] = "" [B17] = "" [B18] = "" [B19] = "" [B20] = "" End If [D17:X20].clearcontents For A = 4 To 24 For B = 2 To 22 For C = 17 To 20 Cells(C, A) = Application.WorksheetFunction.Vlookup(Cells(C, 3), [AC1:AX4], B, 0) Next Next Next End If End Sub شاهد المرفق، If_Function_in_VBA.rar تم تعديل أكتوبر 16, 2006 بواسطه علي السحيب
علي السحيب قام بنشر أكتوبر 16, 2006 قام بنشر أكتوبر 16, 2006 موضوع ذات صله: http://www.officena.net/ib/index.php?showtopic=13069
skyblue قام بنشر أكتوبر 16, 2006 الكاتب قام بنشر أكتوبر 16, 2006 الحقيقة شي يفرح وجزاك الله كل خير فعلا الفضل لله سبحانه وتعالى ثم الى مجهوداتك النيرة وتقديم يد العون لنا . والله لاتعلم قد ايه انا افرح عندما اجد انسان رائع يتجاوب معنا ويحل مشاكلنا رغم مشاغله وظروفه الخاصة , نعم افرحتنا رغم ان سوق الاسهم احزننا وهبط هممنا هذه الايام . اخوي علي جعل الله ايامك كلها فرح وسعادة واحترامي وتقديري الكبير لك .
skyblue قام بنشر أكتوبر 17, 2006 الكاتب قام بنشر أكتوبر 17, 2006 اخوي علي لو اعتبرنا ان البيانات الاساسية اللي هي من AC2:AX7 ليست في نفس صفحة النتائج اي في صفحة اخرى . كيف بيكون الكود . فالله يوفقك ياخوي علي والله طريقت الاكواد رائعة رائعة رائعة ومفيدة جدا . شكرا لك على ردك على جميع استفساراتي ...والله اخجلتني بكرمك . تحياتي لك
علي السحيب قام بنشر أكتوبر 17, 2006 قام بنشر أكتوبر 17, 2006 (معدل) يكون ذلك فقط بإضافة إسم الورقة التي تحتوي على البيانات الأساسية قبل معيار البحث الموجود داخل الدالة VLOOKUP .. هكذا: Cells(C, A) = Application.WorksheetFunction.Vlookup(Cells(C, 3), ورقة6.[AC1:AX4], B, 0) على فكرة .. راجع الرابط التالي يمكن تستفيد منه في التعامل مع الأسهم، http://www.officena.net/ib/index.php?showtopic=14026 شاهد المرفق، If_Function_in_VBA.rar تم تعديل أكتوبر 17, 2006 بواسطه علي السحيب
skyblue قام بنشر أكتوبر 19, 2006 الكاتب قام بنشر أكتوبر 19, 2006 اخوي علي السحيب شكرا لك على التعديل( وايضا التعديل على موضوع البحث في منتهى الروعة ) والحقيقة انك والله اديت خدمة كبيرة لي وفعلا اتعبتك معي ولكن الله يقدرني على رد هذا الجميل . الله يوفقك ويستر عليك ويجعل لك من كل ضيق مخرجا . وكل عام وانت بالف خير . تحياتي لك
skyblue قام بنشر أكتوبر 28, 2006 الكاتب قام بنشر أكتوبر 28, 2006 استاذي علي السحيب يحفظك ربي كل عام وانت بخير عندي ملاحظة بسيطة على الكود اما التكرم بتعديلها لانني سوف استخدم هذا الكود في ملف لدي وهي : في sheet1 اذا كان C17=7 فيجب ان يتم البحث عن رقم 7 في البيانات الاساسية في المجال من AC1:AC4 فاذا وجد ان AC1=7 يتم تسجيل الاعداد التي تقابلها منAD1=AX طبعا عن طريق vlookup وهكذا لبقية الارقام . لانني عندما جعلت المدى من AC1:AC4 ثابتا كما هو ولكنني غيرت الاعداد في المجال AD1:AX4 فان تلك الاعداد لاتظهر صحيحة في المدى من d17:x20 تحياتي لك
skyblue قام بنشر أكتوبر 29, 2006 الكاتب قام بنشر أكتوبر 29, 2006 اخوي علي ايضا اللي لاحظته على الكود ان الكود لايسترجع القيم وانما يكرر قيمة اخر خانة . فمثلا لو كانت الخلية C17=7 فان الكود ياخذ الرقم الموجود في اخر خلية في البيانات الاساسية وهي AX ثم يقوم بتكرارها . لذا امل التكرم بتعديل الكود لانني في امس الحاجة الان له . فالحقيقة انا كنت ارغب ان يكون الكود باستخدام ISNA(vLOOKUP تحياتي لك يااستاذ علي
علي السحيب قام بنشر أكتوبر 29, 2006 قام بنشر أكتوبر 29, 2006 تم التعديل على الطلبين المذكورين .. مع ملاحظة ضرورة إضافة عمودين فارغين بعد العمود AC .. في صفحة البيانات .. وذلك حتى يتم التوافق في عدد الأعمدة المطلوب البحث داخلها في صفحة البيانات وعدد الأعمدة المطلوب ملئها في الصفحة الرئيسية والآن شاهد المرفق، If_Function_in_VBA.rar
skyblue قام بنشر أكتوبر 29, 2006 الكاتب قام بنشر أكتوبر 29, 2006 مبدع يحفظك ربي من كل شر ....والله العظيم من أمس وانا حايس حوسة لايعلم بها الا الله لانني حاولت ان اطبقها على برنامج لدي وماقدرت اخيرا قلت مالها الا مشرفنا اخوي علي السحيب والحمد لله رديت علي وحليت لي مشكلتي .. اضحك الله سنك وفرج همك. اتمنى لو انك تشرح لي جزئية الكود الخاص ب vlookup لانني فعلا بجد ابي اعرفها حتى يمكنني من تطبيق الكود بعد ذلك على اي عمل يخصني ... [D17:X20].clearcontents For A = 4 To 24 For C = 17 To 20 Cells(C, A) = Application.WorksheetFunction.Vlookup(Cells(C, 3), æÑÞÉ6.[AC1:AZ4], A, 0) Next Next وهل هي تعطي نفس نتيجة اisna vlookup. وعلى فكرة انا محتفظ بكل روائعك التي تعتبر مرجع لايمكن الاستغناء عنه ولاتقدر بثمن. واليوم عندي الفرحة فرحتين فرحة الامطار الغزيرة التي هطلت علينا في جدة ومكة المكرمة جعلها الله سقيا خير للبلاد والعباد وفرحة ردك الرائع . تحياتي الغالية لك .
علي السحيب قام بنشر أكتوبر 30, 2006 قام بنشر أكتوبر 30, 2006 (معدل) العفو أخي الكريم، نحن في الخدمة، بخصوص شرح الكود الخاص بالدالة VLOOKUP: [D17:X20].clearcontents هذا الجزء يقوم بإفراغ الخلايا التي ستخرج في بها النتائج من محتوياتها .. وذلك حتى تظل الخلايا فارغة عند حدوث أي خطاً .. والمقصود بالخطأ هنا ليس خطأ في إسترجاع النتائج .. وإنما الخطأ هو في وجود قيمة معينة في النطاق C17:C20 لا يوجد لها نظير في البيانات الأساسية كالقيمة 1 مثلاً في الملف المرفق في مشاركتي السابقة .. فهذه القيمة ليست موجودة في جدول البيانات الأساسية في النطاق AC1:AC4 .. وكذلك عندما تكون تكون أحد خلايا النطاق C17:C20 فارغة .. فيتم تطبيق نفس الشرط، وهذه الطريقة تحل محل إستخدام الدالة ISNA .. داخل ورقة العمل .. وكما لاحظنا الطريقة تختلف بين دوال ورقة العمل ودوال الـ VBA .. في الوصول لنفس الهدف. مع ملاحظة وجود الجزء التالي في بداية الكود .. On Error Resume Next وذلك لكي يتم الإستمرار في إسترجاع النتائج اللاحقة في حالة ورود أي خطأ من الأخطاء التي تحدثنا عنها .. وعدم توقف عمل الكود. For A = 4 To 24 هذا الجزء يمثل أرقام الأعمدة المطلوب وضع النتائج داخلها في النطاق D17:X20 .. وهذه الأعمدة تبداً من العمود رقم 4 إلى العمود رقم 24 .. ونفس هذه العدد يمثل أيضاً عدد الأعمدة المطلوب البحث داخلها في صفحة البيانات الأساسية .. ولكن هنا لم نعتمد على أرقام الأعمدة (لأنه في الدالة VLOOKUP .. تمت الإشارة إلى النطاق المطلوب البحث داخله) بل أعتمدنا على عدد الأعمدة داخل النطاق المحدد في الدالة VLOOKUP والذي يجب أن يتوافق مع عدد الأعمدة المطلوب وضع النتائج داخلها .. لذلك قمنا بإضافة عمودين فارغين بين العمود AC والعمود AF في صفحة البيانات الأساسية وذلك حتى يبداً البحث من العمود الرابع في النطاق (ِAF) وينتهي في العمود الرابع والعشرين (AZ) كما هو الحال في الجدول الخاص بالنتائج. هذا الجزء يمثل أرقام الصفوف في الجدول المطلوب وضع النتائج بداخله. For C = 17 To 20 Cells(C, A) = Application.WorksheetFunction.Vlookup(Cells(C, 3), ورقة6.[AC1:AZ4], A, 0) في هذا الجزء يتم تطبيق الدالة VLOOKUP .. حيث الرجوع لكل خلية يمثل رقم صفها المرجع C .. ويمثل رقم عمودها المرجع A .. هنا يتم وضع كلمة NEXT بعدد المراجع .. وهذه الكلمة تعني التالي .. وهي تعمل مع التعليمة For .. والتي تستخدم لتطبيق نفس الكود على أكثر من خلية. Next Next أتمنى أن يكون الشرح واضحاً، تم تعديل أكتوبر 30, 2006 بواسطه علي السحيب
skyblue قام بنشر أكتوبر 30, 2006 الكاتب قام بنشر أكتوبر 30, 2006 الشرح واضح جداجدا .اشكرك جدا على هذا الشرح الكافي الوافي . اسعدك الله تحياتي لك
الردود الموصى بها