Hawiii قام بنشر أبريل 9, 2020 قام بنشر أبريل 9, 2020 من الأخطاء الشائعة في المنتدى تعريف المتغيرات بصورة غير صحيحة في الـ VBA، مع أن هذه الطريقة صحيحة في بعض اللغات. والخطأ هو صف مجموعة متغيرات في تعريف واحد ، وفي هذه الحالة سوف يتم تعريف المتغير الأخير فقط أما المتغيرات التي قبله سوف سوف يكون نوعها Variant والصح هو تعريف كل متغير على حدى مثال: 'الخطأ Sub Test() Dim a, b As Double Dim rst1, rst2 As Recordset Debug.Print VarType(a) Debug.Print VarType(b) Debug.Print VarType(rst1) Debug.Print VarType(rst2) End Sub 'الصح Sub Test2() Dim a As Double, b As Double Dim rst1 As Recordset, rst2 As Recordset Debug.Print VarType(a) Debug.Print VarType(b) Debug.Print VarType(rst1) Debug.Print VarType(rst2) End Sub 4
أبوبسمله قام بنشر أبريل 9, 2020 قام بنشر أبريل 9, 2020 جزاك الله خيرا @Hawiii اكمل على بركه الله اول طالب حاضر
jjafferr قام بنشر أبريل 9, 2020 قام بنشر أبريل 9, 2020 همم ، وانا وقعت في هذا الخطأ ، يمكن لأني كنت دايخ😁 شكرا لك اخي الهاوي 🙂 جعفر 1
أبوبسمله قام بنشر أبريل 9, 2020 قام بنشر أبريل 9, 2020 (معدل) عند التجربه فقد اعطانى القيمه لنوع المتغير وهذا جدول من ميكروسوفت لمعرفه نوع رقم المتغيرات https://support.office.com/en-us/article/vartype-function-1e08636c-1892-40c2-aff3-2b894389e82d وهذا رابط اخر http://www.java2s.com/Code/VBA-Excel-Access-Word/Data-Type/ValuesreturnedbytheVarTypefunction.htm وللحصول على اسم المتغير Debug.Print TypeName(a) بعتذر عن عدم وضع الكود فالتنسيق لسوء حاله الانترنت الان وفى انتظار مزيد من الشرح @Hawiii جزاك الله خيرا تقبلوا تحياتى وتمنياتى لكم وللجميع بالتوفيق تم تعديل أبريل 10, 2020 بواسطه أحمد الفلاحجى 2
Hawiii قام بنشر أبريل 10, 2020 الكاتب قام بنشر أبريل 10, 2020 (معدل) العفو منكم أنتم أساتذتنا دالة TypeName جميلة وهي أسرع لمعرفة النوع من الرقم أو الرمز. مع ملاحظة أني ذكرت أي متغير لا يتم تعريفه سيكون من نوع Variant ولكن عند التجربة سيعطيك Empty وكلاهما صح ولو أعطيته أي قيمة سوف يعطيك نوع مختلف عن الإثنين ، فالنوع Variant بمعنى متنوع يقبل أي قيم من أي نوع وسوف يعطيك Empty كذلك حتى لو عرفته بـ Variant في حال لم تعطه أي قيمة. تم تعديل أبريل 10, 2020 بواسطه Hawiii
محمد أبوعبدالله قام بنشر أبريل 10, 2020 قام بنشر أبريل 10, 2020 جزاك الله خيرا استاذنا الفاضل كلام مضبوط 100% استمر على بركة الله تحياتي
أبوبسمله قام بنشر أبريل 10, 2020 قام بنشر أبريل 10, 2020 9 ساعات مضت, Hawiii said: العفو منكم أنتم أساتذتنا دالة TypeName جميلة وهي أسرع لمعرفة النوع من الرقم أو الرمز. مع ملاحظة أني ذكرت أي متغير لا يتم تعريفه سيكون من نوع Variant ولكن عند التجربة سيعطيك Empty وكلاهما صح ولو أعطيته أي قيمة سوف يعطيك نوع مختلف عن الإثنين ، فالنوع Variant بمعنى متنوع يقبل أي قيم من أي نوع وسوف يعطيك Empty كذلك حتى لو عرفته بـ Variant في حال لم تعطه أي قيمة. العفو منك اخى هاوى واسمح لى بمنادتك اخى @Hawiii انت الاستاذ انما انا مجرد هاوى وطالب علم مبتدىء توكل على الله واكمل
jjafferr قام بنشر أبريل 10, 2020 قام بنشر أبريل 10, 2020 19 ساعات مضت, Hawiii said: Dim rst1, rst2 As Recordset سبحان الله ـ رُب ضارة ، نافعة !! طبعا انت قصدك Dim rst1, rst2 As ADODB.Recordset, rst3 As DAO.Recordset . انا اعرف انه ممكن ان نستعمل المعرف Variant للرقم او النص ، ولكن الذي لم اكن اعرفه انه ممكن استعمال Variant مع Recordset !! وبما انني استعملت الكود التالي ، واعطاني الاجابة الصحيحة : Dim rst1, rst2 As DAO.Recordset هذا يجعلني اقارن Variant بالـ Object في : Dim xlApp As Object 'Excel.Application Dim xlWB As Object 'Excel.Workbook فإذا استعملنا Variant او Object ، فالكود يكون صحيح ، ونحصل على اجابة صحيحة ، ولكننا لا نستطيع الاستفادة من Intellisense الكود في اعطائنا تكملة للكود (عند كتابة . او مسافة) 🙂 هذه معلومة جديدة لي ، شكرا اخوي الهاوي 🙂 جعفر 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.