مختار حسين محمود قام بنشر أغسطس 13, 2015 قام بنشر أغسطس 13, 2015 الاجابة : ستجدونها فى الجزء الثانى من شرح الأستاذ ياسر أظن أنها واضحة اضافة : نسخ نطاق مستخدما أسلوب المصفوفات لنفرض أنه عندى مجموعة قيم فى النطاق ("A1:A10") كيف يمكن نسخ هذا النطاق بطريقة المصفوفات ؟ الاجابة بكل بساطة : نخزن قيم النطاق فى مصفوفة ثم نحدد مكان التعبئة أو النسخ بس خلاص الكود المستخدم فى النسخ : اختر واحدا من الكودين التاليين : Sub copyrangeusingarray() Dim Arr Arr = Range("A1:A10") Range("D1").Resize(UBound(Arr), 1) = Arr 'نسخ عمودى End Sub Sub copyrangeusingarray2() Dim Arr Arr = Range("A1:A10") Range("G5").Resize(1, UBound(Arr)) = Application.Transpose(Arr) ' نسخ أفقى للبيانات End Sub بمقارنة الكودين نلاحظ اختلافا بعد كلمة Resize هذا الاختلاف ينجم عنه شكل النسخ أفقيا أو رأسيا وأستاذنا ياسر شرح لنا Application.Transpose يلا جرب الكودين مع وضع مجموعة قيم فى النطاق ("A1:A10") تحياتى لكم 1
ياسر خليل أبو البراء قام بنشر أغسطس 13, 2015 الكاتب قام بنشر أغسطس 13, 2015 أخي الغالي مختار تسلم على الإضافات الجميلة بس بردو لازم إنت تجاوب وتقول كل الحلول الممكنة اللي ممكن من خلالها تخلي المصفوفة تبدأ من الواحد مش من الصفر ... وعلى فكرة فيه حل مش موجود في الشرح ..
مختار حسين محمود قام بنشر أغسطس 14, 2015 قام بنشر أغسطس 14, 2015 ببساطة طالما المصفوفة بدأت من الصفر يبقا في الحالة دي عشان نحدد عدد الأعمدة نزود واحد UBound(Arr) + 1 فيه طريقة تانية إننا نضع جملة Option Base 1 يتم وضعه خارج الكود في قسم الإعلانات العامة في الموديول وفي الحالة دي مفيش داعي نزود واحد في السطر يعني الكود هيكون بالشكل ده Option Explicit Option Base 1 أظن أن الحل ده أبسط من الأول . أخى ياسر يا أستاذ الصرح فين الحل اللى ما جاش فى الشرح ؟
ياسر خليل أبو البراء قام بنشر أغسطس 14, 2015 الكاتب قام بنشر أغسطس 14, 2015 هل فيه حلول تانية غير الإعلان بالسطر Option Base 1 ؟
مختار حسين محمود قام بنشر أغسطس 14, 2015 قام بنشر أغسطس 14, 2015 أستاذى الغالى أنا لا أدرى حلولا أخرى ولذلك أسألك جائز الخلط بين الحلين يعنى نصرح بـ Option Base 0 ونزود واحد على الأعمدة UBound(Arr) + 1
ياسر خليل أبو البراء قام بنشر أغسطس 14, 2015 الكاتب قام بنشر أغسطس 14, 2015 يمكن من خلال داخل الكود نفسه عن طريق تحديد بداية ونهاية المصفوفة ولكن يوجد حل آخر في حالة أن الإعلان عن المصفوفة كان من النوع متغير Variant .........
إبراهيم ابوليله قام بنشر أغسطس 14, 2015 قام بنشر أغسطس 14, 2015 (معدل) اخى مختار ايه ياعم انت معزب نفسك ليه والاستاذ ياسر طبعا احنا متأكدين انه نده معلومات كتير عن الموضوع ده بس انا بحب البساطه دايما علشان كده فكرت اعملها بالشكل ده Sub Fillrangeusingarray() Dim Arr Arr = Array("A", "B", "C", "D") Range("A3").Resize(1, 4) = Arr End Sub او بالشكل ده Sub Fillrangeusingarray() Dim Arr Arr = Array("A", "B", "C", "D") Range("a3:d3").Value = Arr End Sub تقبلو تحياتى تم تعديل أغسطس 14, 2015 بواسطه إبراهيم ابوليله
مختار حسين محمود قام بنشر أغسطس 14, 2015 قام بنشر أغسطس 14, 2015 (معدل) أخى ابراهيم التصريح Dim Arr تمام زى ما قال أخونا ياسر من النوع Variant الرقم 4 فى الكود الأول = UBound(Arr) + 1 كله مفهوم بالنسبة لى ويمكن أن يكون الكود بالشكل ده Sub Fillrangeusingarray() Dim Arr Arr = Array("A", "B", "C", "D") Range("A3").Resize(LBound(Arr) + 1, UBound(Arr) + 1) = Arr End Sub لكن حاسس إن فيه حاجة جديدة فى خزانة أبى البراء !!! تم تعديل أغسطس 14, 2015 بواسطه مختار حسين محمود
ياسر خليل أبو البراء قام بنشر أغسطس 14, 2015 الكاتب قام بنشر أغسطس 14, 2015 أخي الحبيب إبراهيم ليس هذا هو المقصود .. المقصود أن تكون الفهرسة تبدأ بالرقم واحد وفي المثالين لو عملت Debug هتلاقي في المثالين المصفوفة بتبدأ برقم صفر ..عايزين نشغل دماغنا ونعمل عملية تنشيط .. أنا مش هشتغل ملقن وبس لأني ببساطة ممكن يكون أقل واحد فيكم عنده معلومات
إبراهيم ابوليله قام بنشر أغسطس 14, 2015 قام بنشر أغسطس 14, 2015 ماشى ياعم ياسر ينفع معاك الكود ده ولا ايه Sub Fillrangeusingarray() Dim Arr As Variant Arr = Array("A", "B", "C", "D") ReDim Preserve Arr(1 To 4) As Variant Range("A3").Resize(1, UBound(Arr)) = Arr End Sub تقبل تحياتى
ياسر خليل أبو البراء قام بنشر أغسطس 14, 2015 الكاتب قام بنشر أغسطس 14, 2015 السطر ده ايه لازمته .......؟؟!! ReDim Preserve Arr(1 To 4) As Variant اعمل Debug عن طريق F8 وشوف ... الفهرس للمصفوفة بيبدأ من كام ..
إبراهيم ابوليله قام بنشر أغسطس 15, 2015 قام بنشر أغسطس 15, 2015 المشكله اخى ياسر ان الكىبورد بتاعتى كل زراير ال f معطله لاتعمل فلن اتمكن من مشاهده ما ينتج عنه الضغط على زر f8 ولكنك سألت مافائده السطر ReDim Preserve Arr(1 To 4) As Variant لو تم حزف هذه السطر فلن يتم ترحيل اخر قيمه فى المصفوفه الى هيا d الى الشيت ولكن بعد اضافة هذا السطر تم اعاده تحجيم المصفوفه لتقرأ على انها تبدأ من 1 الى 4 عناصر وبالتالى يتم ترحيل العنصر الرابع الى الشيت دون الحاجه الى كتابة الرقم 1 تقبل تحياتى
مختار حسين محمود قام بنشر أغسطس 15, 2015 قام بنشر أغسطس 15, 2015 بعيدا عن Option Base 1 أو نزود واحد على الأعمدة UBound(Arr) + 1 ايه رأيكم فى اسلوب الحلقات Sub mokhtest() Dim Arr Arr = Array("A", "B", "C", "D") For i = LBound(Arr) To UBound(Arr) Cells(3, i + 1).Value = Arr(i) Next i End Sub
إبراهيم ابوليله قام بنشر أغسطس 15, 2015 قام بنشر أغسطس 15, 2015 (معدل) اخى مختار منور صاحى ليه لحد دلوقتى ياراجل على العموم حل موفق ولكنى اعتقد ان الى ف دماغ اخونا ياسر ازاى يتم التنفيذ بدون حلقات تكراريه على العموم نستنى بقى لحد ما اخونا ياسر يصحى من النوم تقبل تحياتى تم تعديل أغسطس 15, 2015 بواسطه إبراهيم ابوليله
إبراهيم ابوليله قام بنشر أغسطس 15, 2015 قام بنشر أغسطس 15, 2015 بعيدا عن Option Base 1 أو نزود واحد على الأعمدة UBound(Arr) + 1 ايه رأيكم فى اسلوب الحلقات Sub mokhtest() Dim Arr Arr = Array("A", "B", "C", "D") For i = LBound(Arr) To UBound(Arr) Cells(3, i + 1).Value = Arr(i) Next i End Sub طب انت ايه رأيك يقى ان انا مش هضيف رقم 1 ده خالص لا على المصفوفه ولا داخل الحلق التكراريه Sub mokhtest() Dim arr arr = Array("A", "B", "C", "D") ReDim Preserve arr(1 To 4) As Variant For i = LBound(arr) To UBound(arr) Cells(3, i).Value = arr(i) Next End Sub تقبل تحياتى
ياسر خليل أبو البراء قام بنشر أغسطس 15, 2015 الكاتب قام بنشر أغسطس 15, 2015 بسم الله ما شاء الله تفاعل جميل جداً بالموضوع وأنا نفسي استفدت من هذا التفاعل نجرب الكود التالي ونحاول نعمل Debug (اتصرف يا أخ إبراهيم في أي لوحة مفاتيح عشان هنحتاج نعمل Debug بشكل دائم لأن الأمر ده هيعلمنا إزاي كل سطر بيتنفذ و دا مهم جداُ في بناء الأكواد) Sub Test() Dim Arr Arr = [{"A", "B", "C", "D"}] Cells(3, "A").Resize(1, UBound(Arr)).Value = Arr End Sub بدون استخدام كلمة Array فقط استخدمنا بدلاً منها هذه الأقواس [ ] ، وعشان تقرا المصفوفة بحيث تبدأ من الواحد استخدمنا الأقواس { } .... بس خلاص 1
مختار حسين محمود قام بنشر أغسطس 15, 2015 قام بنشر أغسطس 15, 2015 أخى ابراهيم مش بقولك إن خزانة أستاذنا ياسر مملوءة علماً وأدباً
ياسر خليل أبو البراء قام بنشر أغسطس 15, 2015 الكاتب قام بنشر أغسطس 15, 2015 صدقني أخي الغالي المتميز مختار أنا بستفيد منكم قبل ما أفيد بمعلومة ..يبدو إن أسلوب طرح الأسئلة أكثر الأساليب فعالية حيث أنني أستفيد بطرق مختلفة في الموضوع الواحد الحمد لله الذي بنعمته تتم الصالحات
جمال جبريل قام بنشر أبريل 13, 2017 قام بنشر أبريل 13, 2017 جميل جدا ، وبارك الله فيكم ولكن ما فرق بين المصفوفة ، والاسماء المعرفة ، يعني لدي خلايا من a1:b50 معرفة باسم ولو كان هناك فرق ، ما هو الافضل ولماذا؟
إبراهيم ابوليله قام بنشر أبريل 13, 2017 قام بنشر أبريل 13, 2017 ياه فعلا والله من مزايا العلم انك كلما تبتعد عنه يبتعد عنك اكثر من بعدك عنه اياك ان تتعلم شيئا وتكتفى به دون السعى المستمر لتطويره وتنميه لانه فى هذه الحاله ستصبح لاشئ ولذلك انا حاسس انى اول مره اسمع او اشوف ازاى بنتعامل مع المصفوفات وان مش انا ال شاركت فى الموضوع ده من الاساس وكل الشكر للاخ جمال لانه اعاد الموضوع الى الاذهان تقبلوا تحياتى
شوقي ربيع قام بنشر أبريل 13, 2017 قام بنشر أبريل 13, 2017 7 ساعات مضت, جمال الخطيب said: جميل جدا ، وبارك الله فيكم ولكن ما فرق بين المصفوفة ، والاسماء المعرفة ، يعني لدي خلايا من a1:b50 معرفة باسم ولو كان هناك فرق ، ما هو الافضل ولماذا؟ الفرق ان الاول يبقى حاجز مكان في الداكرة طوال الوقت اما المصفوفة تخزن مكان في الذاكرة وقت الحاجة اليها فقط لذى المصفوفة فائقة السرعة
إبراهيم ابوليله قام بنشر أبريل 13, 2017 قام بنشر أبريل 13, 2017 اخى واستاذى شوقى فينك يا اخى من زمان ما بنشوفك وحشتنا ووحشتنا مواضيعك ومشاركاتك الجميله تقبل تحياتى 1
شوقي ربيع قام بنشر أبريل 13, 2017 قام بنشر أبريل 13, 2017 2 دقائق مضت, إبراهيم ابوليله said: اخى واستاذى شوقى فينك يا اخى من زمان ما بنشوفك وحشتنا ووحشتنا مواضيعك ومشاركاتك الجميله تقبل تحياتى ربي يحفظك اخي ابراهيم انتم دائما في القلب فقط ضروف الدنيا التي تبعدني عنكم تحياتي وتقديري لك 1
إبراهيم ابوليله قام بنشر أبريل 13, 2017 قام بنشر أبريل 13, 2017 3 دقائق مضت, شوقي ربيع said: ربي يحفظك اخي ابراهيم انتم دائما في القلب فقط ضروف الدنيا التي تبعدني عنكم تحياتي وتقديري لك كان الله فى العون يا اخى تقبل تحياتى
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.