اذهب الي المحتوي
أوفيسنا

excel vba tips


الردود الموصى بها

السلام عليكم و رحمة الله وبركاته 

الإخوة الأحباب
لاحظت من فترة ليست بالقصيرة أن كثير منا يحتاج إلى السؤال عن جزئية صغيرة في كتابة كود أو غستخدام خصائص أداة من أدوات vba

 

و مع كثرة الموضوعات أو أن يكون الباحث مثل حالي ليس صاحب خبرة كبيرة في سرعة الوصول لما يريد 

رأيت أن نجعل هذا الموضوع مرجع خاص يشمل كافة النصائح البرمجية التي يمكن ان نقدمها لبعضنا البعض ليكون مرشدا للمستجدين امثالي و مرجعا للخبراء من الأساتذة الأعضاء و كذلك الزوار

 

فما رأيكم ان يشارك الجميع في هذا الموضوع كل بما لديه و بصفة مستمرة لتقديم النصائح الخفيفة التي تفيد من هو على بداية طريق تعلم الأكسيل خاصة

 

بعض الملاحظات من واقع خبرة في التعامل مع المنتديات لفترة كبيرة :- 
 

- عنوان الموضوع مقصود لتصل إليه محركات البحث بسهولة و بشكل مستمر 

- هذا الموضوع ليس مقصودا منه تفريغ لمحتوى ما يطرحه الجميع من موضوعات هنا في منتدى الأكسيل

- اختصار الموضوع قدر المستطاع على المشاركات المقصودة يفيد القارئ أكثر من مشاراكات التأييد و الشكر فقط
الفكرة مطروحة و لكم الراي فيما ترونه كأغلبية إن شاء الله 
مثال على ما يمكن ان تكون عليه مشاركات الموضوع :-
لكتابة ملاحظات أو شرح ضمن الكود و لا يتم تنفيذه أدخل هذة العلامة قبل كتابة ما تريد ( ' ) تجدها على مفتاح حرف (ط) في لوحة المفاتيح 

رابط هذا التعليق
شارك

السلام عليكم

أخي الحبيب

فكرة ممتازة

بارك الله فيك

سأبدا معك بهذه المعلومة الصغيرة القيمة ممكن نقول عنها tip

 

يمكنك إستبدال الأمر 

Tip # 001

Range ("A1")
 بالتعبير 
[A1]

 

وهما يؤديان نفس الغرض إلا أن الأخير يجعل الكود أخف وأقصر لقارئه

وطبعا A1 لأي خلية ويمكن أيضا للمجالات ككل مثل

Range ("A1:X555")
تستبدل بــ
[A1:X555]

 

 

رابط هذا التعليق
شارك

بغرض تسريع عمليات الكود

 

Tip # 002
 

ضع الأوامر في سطر واحد وبينهما : أفضل من وضعها في أسطر متتالية خصوصا لو الأوامر قصيرة

مثلا:

 

For i = 1 To 20
    Cells(i, 2) = i ^ 2
    Cells(i, 3) = i * 2
    Cells(i, 4) = i / 2
Next i

تستبدل بــ
For i = 1 To 20: Cells(i, 2) = i ^ 2: Cells(i, 3) = i * 2: Cells(i, 4) = i / 2: Next i
رابط هذا التعليق
شارك

بغرض تسريع الكود ككل

 

Tip # 003
 

ضع أمر في أول الكود بالأعلي لإطفاء عمل تحديث الشاشة (ScreenUpdating) 

ولاتنسي أن تضع أمرا آخر في آخر الكود بالأسفل يعيد عمل تحديث الشاشة (ScreenUpdating) 
 
كالتالي
Sub code001()
Application.ScreenUpdating = True

code
...
code

Application.ScreenUpdating = False
End Sub

 

  • Like 1
رابط هذا التعليق
شارك

جزاكم الله خيرا أخواني الكرام  أ / أبو محمد أشرف - أ / طارق محمود  
 على دعمكم و تأييدكم للفكرة 

أخي و أستاذي الحبيب / طارق محمود 
تفضلكم  بالرد شرف لي و مشاركتكم في الموضوع مكسب لنا جميعا لنستزيد من علمكم - بارك الله فيك و نفع بعلمك

_________________________________________

 

TIP # 004

جملة ( Option Explicit) تجدها أحيانا في بداية بعض الأكواد
- وظيفتها

 تجبرك على تعريف المتحولات التي تستخدمها في الكود بكلمة ( Dim) أو ما يرادفها 


مثال 

for r=1 to 100
 

 

النتيجة مع إستخدامك للجملة

Variable not defined
 

الحل

Dim r As Integer
for r=1 to 100
 

لماذا علي أن أستخدمها في الكود ؟
لأنها تنبهك للخطأ الذي ربما تغفل عنه خاصة في الأكواد الكبيرة

 

 

هل يمكن أن يتم إدراجها تلقائيا دون أن أكتبها في كل مرة ؟


نعم يمكن للأكواد الجديدة فقط و ليس السابقة ( حيث ستحتاج لإضافتها يدويا ) من خلال الخطوات التالية 
 من محرر الأكواد إختر "Tools" ثم "Options"  ضع علامة صح على الخيار

 

Require Variable Declaration
 

 

بالفرنسية :


 

Déclaration des Variables Obligatoire
 

 

ماذا يحدث لو لم أضع هذة الجملة في بداية الكود و أخطأت في كتابة أسم المتحول ؟

سوف يعتبر جميع المتحولات على انها من نوع متغير ( Variant ) وذلك يؤدي الى هدر كبير في الذاكرة كما ينتج عنه انخفاض في الأداء وايضا فإن عدم التصريح يؤدي في حال وقوع اخطاء في كتابة او تهجئة اسم المتحول الى قيام VBA بإعتباره متحولاً جديداً. 


 

_______________________________________________ 

* المراجع في الإجابة  ( و ذلك لحفظ الحقوق لأصحابها )  مقتطفات من :-
- موضوعات من الإنترنت 

- رد لأخي الكريم أبو حنين في أحد الموضوعات هنا منتدى أوفيسنا


 

تم تعديل بواسطه أبو ردينة
رابط هذا التعليق
شارك

اخى الكريم 

طارق

 Sub code001()

Application.ScreenUpdating = True



code
...
code

Application.ScreenUpdating = False
End Sub

هذا الكود على حد علمى يستخدم لمعالجة بطئ الاكواد

ولكن هل كلمة FALSE

تكون فى بداية الاكواد ام فى نهايتها

بمعنى انها ستكون بالشكل الاتى

Application.ScreenUpdating = FALSE


Application.ScreenUpdating = TRUE

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information