نجوم المشاركات
Popular Content
Showing content with the highest reputation on 06/24/15 in مشاركات
-
أخي الحبيب أبو يوسف إليك الكود التالي عله يفي بالغرض ضع الكود في موديول جديد Sub TellMe() Dim CalState CalState = Application.Calculation If CalState = -4135 Then MsgBox "Calculation Is Manual" End Sub ثم ضع الأكواد التالية في حدث المصنف Private Sub Workbook_BeforeClose(Cancel As Boolean) TellMe End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) TellMe End Sub Private Sub Workbook_Open() TellMe End Sub سيتم التذكير عند فتح المصنف وعند حفظ المصنف وعند إغلاق المصنف أرجو أن يكون هذا هو المطلوب Warn Me.rar2 points
-
ما شاء الله بارك الله لك في علمك وأسلوبك تجميعة رائعة ووجبة دسمة لا تفطر الصائم وفقك الله لكل ما يحب ويرضى2 points
-
السلام عليكم ورحمة الله وبركاته كل عام وانتم بخير اطلب المسامحة ممن راسلني ولم يجد رد مني هديتي لكم بعد هذه الغيبة Option Explicit '========================================================" ' بسم الله الرحمن الرحيم " '========================================================" ' (دالة تحويل الرقم الى نص باللغة العربية (تفقيط " ' kh_TextNum " '========================================================" 'Num الرقم " '========================================================" 'sex جنس العملة " 'FALSE ( فارغ او صفر مذكر ) " 'TRUE ( أو اي رقم غير الصفر مؤنث ) " '========================================================" 'sNameCurr اسم العملة الرئيسية مفرد " 'pNameCurr اسم العملة الرئيسية جمع " 'NameCurrDec اسم العملة الكسرية " 'Decimal_Count طول الكسر افتراضـياً : بدون اظهار الكسر " '===============================================================================================================================================" 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" '===============================================================================================================================================" ' ملاحظات ' (اولاً : العملة الرئيسية مثنى (يقوم بها الكود تلقائيا ' مع ملاحظة اذا اسم العملة ينتهي بالتاء المربوطة ' يجب ان يكتب كذلك وليس بالهاء ' ----------------------- ' ثانياً : اذا كانت العملة الرئيسية مفرد فارغاً تعتبر ' اسماء العملات (الجمع والكسري) فارغة تلقائيا ' ----------------------- 'ثالثاً : الكلمة الابتدائية بامكانك تغييرها او تجعلها فارغة Private Const MyBegTx As String = "فقط " ' "" ' ----------------------- ' MyTNum رابعا : يمكنك التغيير (اضافة,حذف,تحرير) في الثابت ' للفئات الصفرية للرقم ادناه Private Const MyTNum As String = "ألف-آلاف/مليون-ملايين/مليار-مليارات/بليون-بلايين/بليار-بليارات/ترليون-ترليونات/تريليار-تريليارات/كدرليون-كدرليونات" '===============================================================================================================================================" 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" '===============================================================================================================================================" Function kh_TextNum(Num As String, Optional sex As Boolean = False, Optional sNameCurr As String = "", Optional pNameCurr As String = "", Optional NameCurrDec As String = "", Optional Decimal_Count As Byte = 2) As String Dim Spp, zt Dim i%, ii%, pr% Dim MyMid$, nCurr$, Txt$, Txt1$, Txt2$ '====================================== If Not IsNumeric(Num) Then GoTo kh_Exit Spp = Split("/" & MyTNum, "/") ii = UBound(Spp) If Num < 0 Then Num = Abs(Num) '====================================== If Val(Num) > Val(String((ii + 1) * 3, "9") & ".999") Then GoTo kh_Exit '====================================== nCurr = sNameCurr & "-" & IIf(pNameCurr = "", sNameCurr, IIf(sNameCurr = "", "", pNameCurr)) '====================================== Txt1 = Format(Num, String((ii + 1) * 3, "0") & ".000") For i = 0 To ii MyMid = Mid(Txt1, (i * 3) + 1, 3) If MyMid Then zt = Mid(Txt1, (i * 3) + 4, Len(Txt1)) zt = IIf(ii - i, Int(zt), zt) Txt2 = IIf(ii - i, Trim(Spp(ii - i)), nCurr) pr = 1 + IIf(ii - i, 1, CInt(sex)) Txt = Txt & IIf(Len(Txt), " و", "") & kh_nText(MyMid, Txt2, pr, zt, CBool(sNameCurr <> "")) End If If i = ii Then If MyMid = 0 Then Txt = Txt & IIf(Len(Txt), " ", "صفر ") & sNameCurr Next '====================================== Txt = MyBegTx & Txt & kh_dText(Num, sNameCurr, NameCurrDec, Decimal_Count) '====================================== kh_Exit: kh_TextNum = Trim(Txt) End Function ' معالجة العدد من 1 الى 999 لكل فئات الرقم Private Function kh_nText(ByVal iNum As String, ByVal oMm As String, ByVal ibs As Integer, ByVal z As Boolean, ByVal tCu As Boolean) As String Dim Sp Dim Num1%, Num2%, Num3% Dim oM$, S$, S1$, nT$, nT0$, nT1$, nT2$ '====================================== Sp = Split("واحد,إحدى,اثنتان,ثلاث,أربع,خمس,ست,سبع,ثمان,تسع,عشر,إحدى ,اثنتا ", ",") '====================================== If ibs Then S = "ة": Sp(1) = Sp(0): Sp(2) = "اثنان": Sp(11) = "أحد ": Sp(12) = "اثنا " Else S1 = "ة" oM = Trim(Split(oMm, "-")(0)) '====================================== Num1 = Left(iNum, 1) Num2 = Right(iNum, 2) Select Case Num1 Case 1: nT0 = "مائة" Case 2: nT0 = "مائتا" & IIf(ibs = 2, IIf(Num2 < 3, "", "ن"), IIf(Num2 = 0 And oM <> "", "", "ن")) Case 3 To 9: nT0 = Sp(Num1) & "مائة" End Select '========================================= Num1 = Right(iNum, 2) Select Case Num1 Case 1, 2: If nT0 <> "" Then If ibs = 2 Then nT0 = nT0 & " " & oM Case 11 To 99: If oM <> "" Then If ibs Then If z Then oM = oM & "اً" End Select '----------------------------------------- Select Case Num1 Case 1 nT = IIf(oM = "", Sp(0) & S1, oM) oM = IIf(ibs <> 2 And oM <> "", Sp(0) & S1, "") Case 2 nT = IIf(oM = "", Sp(Num1), Replace(oM, "ة", "ت") & IIf(z = 0 And ibs = 2 And tCu, "ا", "ان")) oM = IIf(ibs <> 2 And oM <> "", Sp(Num1), "") Case 3 To 10 oM = Trim(Split(oMm, "-")(1)) nT = Sp(Num1) & S Case 11, 12 nT = Sp(Num1) & Sp(10) & S1 Case 13 To 19 nT = Sp(Num1 - 10) & S & " " & Sp(10) & S1 Case 20 To 99 Num2 = Right(Num1, 1) Num3 = Left(Num1, 1) If Num3 = 2 Then nT1 = "عشرون" Else nT1 = Sp(Num3) & "ون" nT2 = Sp(Num2) & IIf(Num2 > 2, S, "") & " و" & nT1 If Num2 = 0 Then nT2 = nT1 nT = nT2 End Select '====================================== S = IIf(nT = "" Or iNum < 100, "", " و") nT = Replace(nT, Sp(8) & "ة", Sp(8) & "ية") kh_nText = Trim(nT0 & S & nT & " " & oM) '====================================== End Function ' معالجة الكسر Private Function kh_dText(ByVal dNum As String, ByVal NCur As String, ByVal Ndec As String, ByVal co As Byte) As String Dim Td$, Td1$ On Error GoTo 1 If NCur = "" Then Ndec = "" Td = Format(Round(CCur(dNum - Int(dNum)), co), "0." & String(co, "0")) If Td = 0 Or Td = 1 Then Td1 = "": GoTo 1 If Len(Ndec) Then Ndec = " " & Ndec: Td1 = Td * CVar("1" & String(co, "0")) Else Ndec = " " & NCur: Td1 = Td Td1 = " و " & Chr(40) & Td1 & Chr(41) & Ndec 1: kh_dText = Td1 End Function دالة تحويل الرقم الى نص عربي.rar ================================================= الملف المعدل: هذا المرفق بامكانية تفقيط الكسر وامكانية ادخال كلمة نهاية النص دالة تحويل الرقم الى نص عربي.rar ================================================= رابط مباشر للملف1 point
-
لقد طرح أخي ومعلمي الجليل الأستاذ // عبدالله باقشير "حفظه الله " وجزاه عنا خير الجزاء , في ابداع سابق له (( قــوائم مخصصة علي الفورم باستخدام - CommanBars)) علي الرابط التالي http://www.officena.net/ib/index.php?showtopic=44506 وعمله الذي فتح بوابة كبيرة امام استخدمات الاكسيل وتمكنه من التحكم بالاكواد وتطويعها جزاه الله خيرا وجعل كل اعماله في ميزان حسناته وارجوا منه السماحة انني استخدمت عمله وطبقته علي موضوع شئون الموظفين الاصدار الثاني - النسخة التجريبية لوجود اخطاء بالنسخة الاولي فاهدي عملي المتواضع كلمة المرور 2300 جعل الله جميــــــع اعمالنا خالصة لوجه الكريم والله ولي التوفيق شئـون الموظفيين الاصدار الثاني نسخة تجريبية.rar1 point
-
السلام عليكم أقدم لكم في هذا العرض المسابقة القرآنية، وهي تحتوي على 20 سؤال.. في البداية سيظهر السؤال، وبعده بلحظات سيظهر زر الجواب، حاول أن تعرف الجواب، ثم اضغط الزر لمعرفة إذا كانت إجابتك صحيحة أم لا، وبعد ذلك سيظهر زر الانتقال للسؤال التالي. وقد جعلت الملف مفتوح (بدون كلمة مرور) وبدون اسم المصمم، لمن يريد التعديل عليه حسب حاجته. حجم الملف: 2.07 ميجابايت اضغط هنا للتحميل1 point
-
أخي الغالي أبو يوسف وعليكم السلام ورحمة الله وبركاته الحمد لله أن ساهم الكود ولو بجزء من الحل .. وإن شاء الله يشارك الأخوة الأعضاء في المزيد من الأفكار ... سؤالي .. هل هناك أوراق عمل يتم التنقل بينها في أثناء العمل ... هل تريد أن تعطي التنبيه في حالة التنقل بين أوراق العمل المختلفة أم تريد التنبيه في حالة العمل على خلايا محددة .. يرجى الدقة في توضيح المطلوب1 point
-
ربنا كريم خطر على بالي طريقة للتوزيع مختلفة ورغم انها تعتبر طويلة نوعا قياسا الى الطرق السالفة ولكن ينتج عنها افكار فريدة لم تخطر على البال من النتائج : 1- الاستعلام عن امام محدد والجوامع التي عين فيها خلال الشهر ( موجودة في البرنامج السابق ) 2- الاستعلام عن جامع محدد والائمة المعينين فيه خلال الشهر ( غير متاحة في البرنامج السابق ) 3- الاستعلام عن الائمة التي لم يشملهم التوزيع كليا او جزئيا ( اعتقد غير متاح سابقا ) 4- الطريقة المستخدمة في التوزيع ستكون عشوائية 100% ( غير متاحة في البرنامج السابق ) ولكن قبل هذا احب ان انوه الى ان التكرار الافقي عند التوزيع في احد البرامج المرفقة شيء طبيعي السنا نثبت امام في مسجد طيلة الشهر ؟ والمهم : هو عدم وجود تعارض خلال اسبوع يعني في التوزيع الجديد يحتمل ( وأقول : يحتمل ) ان يتكرر جامع خلال شهر لإمام واحد لانها ارقام عشوائية توزع على خمسة اعمدة وكل عمود منفصل بنفسه عن الآخر لهذا احببت التنويه من البداية وقبل الشروع في العمل لتكون على بينة1 point
-
1 point
-
امين يارب العالمين ------------------------------------ جزاك الله خيرا ابو البراء هو المطلوب و نجحت الفكرة تحياتي ورمضان كريم ------------------------------------------------------------ وتقبل الله منا منكم ولسائر الامة الاسلامية ان اشاءالله1 point
-
الأخ الكريم زوهير كلما زادت المشقة زاد الأجر بإذن الله أعانكم الله وتقبل منا ومنكم بالنسبة لطلبك غاية في اليسر والسهولة .. وهو قبل الكود أن تقوم بحماية الورقة بكلمة سر ولكن قبل ذلك تحدد خلايا الإدخال وكليك يمين ومن آخر تبويب Protection شيل علامة الصح من جانب الخيار Locked ومن جانب الخيار Hidden ؛ عشان تستثني الخلايا دي من الحماية .. وبعدين فعل الحماية بأي كلمة سر مثلاً في الملف المرفق كلمة السر 1 (الله واحد لا شريك له) .. وقبل الكود تضع سطر لفك الحماية بكلمة السر المحددة كما بهذا الشكل ActiveSheet.Unprotect 1 وبعد تنفيذ الكود تعود الحماية بسطر آخر ActiveSheet.Protect 1 جرب الملف المرفق وإن شاء الله يكون المطلوب تقبل تحياتي Sum Values Between Two Dates.rar1 point
-
السلام عليكم ورحمة الله وبركاته السيد الاستاذ/ محمد حسن المحمد اشكرك علي سرعه الاستجابة والرد علي وبالفعل هذا الذي اريده في معاينة الطباعه, ولكن ارجو ان تقول لي كيفية حل المشكلة لتطبيقه علي البرنامج الخاص بي حيث البرنامج الاصلي به بيانات شخصية لا استطيع للاسف ارفاقه فقد ارفقت ما يماثله واشكرك كثيرا1 point
-
السيد Sakro المحترم مرحباً بك في منتدى أوفيسنا ...السلام عليكم ورحمة الله وبركاته.. لا أجمل من اللغة العربية على ظهر البسيطة فيرجى العمل على تعريب اسمك الكريم ثم إنني حاولت تعديل تقريرك هذا ليظهر ضمن صفحات لا تتجاوز 10 لا تحتوي على فراغات بينها أوفيس 2007 وكل الصفحات التالية تماثل الصفحة الأولى ...ريثما تجد من يقوم بمساعدتك بشكل أدق والسلام عليكم test program.rar1 point
-
1 point
-
استاذ / خالد الرشيدي أسأل الله الكريم ان يوفقك في الدنيا والاخرة وينفع الناس بعلمك ويجعله له خيرا في الدنيا والاخرة شكراا جزيلا1 point
-
جعلك الله ممن يناديهم المنادي يوم القيامة لكم النعيم سرمدا تحيون ولا تموتون أبدا تصحون ولا تمرضون أبدا تنعمون ولا تبتئسون أبدا يحل عليكم رضوان ربكم ولا يسخط عليكم أبدا مع شكري وتقديري ( اخوك محمد علي الطيب)1 point
-
ما شاء الله أخى الحبيب و أستاذى ياسر خليل .. صيغة رائعة غير اننى لا افهم ما معنى 103 فى الصيغة ؟ هل من الممكن القاء مزيد من الضوء حول تلك النقطة و ماذا يحدث اذا غيرته لرقم آخر ؟ دمتم بخير و أعزكم الله1 point
-
1 point
-
السلام عليكم أ.ياسر خليل ابو البراء مرورك شرفني واسعدني بارك الله فيك وجزاك خيرا عن كلماتك ودعائك الطيب1 point
-
أخي الحبيب خالد الرشيدي إبداع بلا حدود .. بارك الله فيك وجزيت خيراً على الشرح الوافي والرائع والمتميز1 point
-
لعل السرعة فى عرض المواضيع كما قال استاذى إبراهيم ابو ليله قد جعلتنى انسى بعد شرح الدالة INDIRECT ان اعود مره اخرى الى الفكرة رقم 4 واشرح المعادلة المستخدمة بها ولكن كما يقول المصريين ...... ملحوقة تكملة الفكرة الرايعة 4 / ب لا ننسى & هى أداة ربط النصوص ............................................................. يتــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــبع1 point
-
مع انك لم تحمل الملف اليك هذا النموذج للعمل عليه لا تحاول الترقيم في العامود الأول فانه يرقم تلقائياً حسب الصنف (كل صتف جديد يأخذ رقمه و المكرر يحافظ على الرقم المناسب) مبيعات.rar1 point
-
1 point
-
السلام عليكم و رحمة الله .. الأخ محمود .. عمليات التصفية و البحث موجودة في الاكسس بشكل افتراضي , فقط اختر تصفية او بحث حسب الحقل الذي فيه مؤشر الماوس ... في المرفقات القاعدة مع تمكين التصفية و شرح فيديو بسيط من نوع (Screen2EXE) و هو آمن ... https://www.youtube.com/watch?v=d-vDWKhFKJ8 Video_Filter.zip مساجد.zip1 point
-
السلام عليكم و رحمة الله .. الأخ محمد حسن المحمد : بارك الله بك و جزاك الله خيرا . الأخ محمود ... فضلا قم بفتح نافذة الأئمة , حيث هناك يمكنك إدخال المنع الزمني و منع المساجد و التثبيت الخاص بكل إمام .. أما النوافذ الأخرى فهي تعرض لك البييانات التي ادخلتها في نافذة الأئمة .... يرجى تحميل النسخة الجديدة من المرفقات .. بالتوفق ... مساجد.zip1 point
-
ونعم الشرع ...لا أجمل من الضوابط التي تعطيك الخيارات ضمنها...ما زاد عن حده انقلب ضده ....لا إفراط ولا تفريط.1 point
-
الحقيقة أنكم أبر وأوفى الأصدقاء ولكم مني خير الدعوات الطيبات ولكم وافر التحية والاحترام1 point
-
بسم الله ما شاء الله عليك أستاذي ووالدي روؤف وإنه لشرف كبير لي أن تعتبرني في مقام ابنك .. والله إنه لشرف كبير لي ايه الجمال والحلاوة دي ..! سلاااااااااام مربع لأحسن بروفسيور في الرياضيات بصراحة أنا منبهر جداً بهذا الكم من العلم .. زادك الله علماً وحلماً وإن شاء الله الأعضاء يستفيدوا من خبراتك في هذا المجال تقبل ودي وحبي واحترامي وتحياتي1 point
-
أبني وصديقى ومعلمي أبي البراء ليس بين الأب وولده من عتاب واسمح لي أن اعتبرك أبني حيث أنى رزقت ببنتين فقط الأولى صيدلانية والثانية دكتورة اقتصاد انجليزي بالجامعة فأنا يشرفني أن تكون أبني وربنا يديم عليك أخلاقك الرائعة وشكرا مرة أخرى وهذا موقعى المتواضع الذي لم يتم تعديله من سنوات بسبب توجهي للكتابة الدينية http://raouf2009.webs.com1 point
-
لجعل الكود لا يعمل على الشيت الأول والثانى ضع السطر التالى If ActiveSheet.Name = "Sheet1" Or ActiveSheet.Name = "Sheet2" Then Exit Sub بدلا من السطر If ActiveSheet.Name = "Sheet3" Then Exit Sub مع تغير أسماء الشيتات sheet1 و sheet2 بما يناسب أسماء الشيتات فى الملف الخاص بك اذا كانت لها أسماء مختلفة بالنسبة للسؤال الثانى سؤالك يوضح أنك تستعمل أوفيس 2007 أو 2010 فيمكنك عند حفظ الملف اختيار excel 97 - 2003 workbook أو اختيار excelmacro -enable workbook فهذه الاختيارات تدعم وجود الأكواد1 point
-
بالنسبة للطلب الأول وهو تطبيق الكود على جميع الشيتات ما عدا شيت محدد الكود التالى يطبق على الشيتات 1 و 2 فقط ولا يطبق على شيت 3 يمكنك عمل نفس الفكرة Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If ActiveSheet.Name = "Sheet3" Then Exit Sub If Target.Column = 1 Then Target.Offset(0, 1).Value = Now() End If End Sub أما بالنسبة للسؤال الثانى فان الملف المرفق له امتداد xls وهذا الامتداد يدعم وجود الأكواد وأيضا الامتداد xlsm أما الامتداد الذى لا يدعم الأكواد هو xlsx Now.rar1 point
-
اخي البرنس ارجو منك ابداء رايك في المرفق المرفق لن تقوم بادخال يدوي الا للاسم والرقم القومي ليقوم الكود بالتالي استخراج تاريخ الميلاد استخراج المحافظة (ينقص الكود بعض رموز المحافضات المصرية يمكنك اضافتها في الكود فانا مثلا اضفت اليمن برمز 60) فصل اسم الاب في خانة اسم الاب وبالمعادلات سيتم حساب العمر في تاريخ 1/10/2011 (تم التعديل على المعادلات لتتجاوز الخطاء في حال خلو الخلية) كما يمكنك استخراج جنس الطالب اهو ذكر او انثى (اترك لك تحديد الخانة المناسبة ) الرجاء ابداء الراي فان استفدت منه فالمطلوب منك دعوة بظهر الغيب للاستاذ خبور خير(ابوعلي) حفظه الله فاالدوال من ابداعاته ابواحمد بيان ffابواحمد.rar1 point
-
السلام عليكم الاخ/ابوهاجر المصري ------------- المحترم الله يبارك فيك اخي على هذا المجهود المبذول جعله الله في ميزان حسناتك ========================================== بالنسبة لتحميل الصور بامكانك تحميلها كمرفق في المشاركة وبعد التحميل اذهب الى القائمة التي مكتوب فيها (الوصول للمرفقات الحالية) افتحها وستجد ثلاثة اختيارات : اختار : (ادخل الملف المرفق في صندوق النص ) بعد ما تحدد في صندوق النص موقع الادخال بالتاشير عليه هذا علشان ما تتعب نفسك في تحميلها الى اماكن اخرى اخوك خبور خير1 point
-
السلام عليكم معليش اخي لو انت سألت نفسك ليش يسمح ب نطاقين وليس 3 او 4 او 5 اخي العزيز لأن لمقصود ليس 2 او 3 او4 ولكن المقصود من الى يعني اثنين (From --- To) تحياتي1 point
-
بسم الله الرحمن الرحين الأخ يعقوب والأخ نزار جزاكم الله خيرا نستكمل سويا السلسلة الدرس الأول من الجزء الرابع ( 4/1 ) الجزء الرابع المتغيرات وأنواع البيانات والثوابت Variables, Data Types, and Constants في هذا الجزء سوف تتعلم التالي : * أنواع المتغيرات . * توجيه مدخلات المستخدمين . * المصفوفات . * التفاعل مع المستخدمين . - كما أن برنامج إكسيل يركز على جداول البيانات ، فمن الطبيعي أن أبدأ الموضوع المتعلق بالمتغيرات بأن أطلب منك التفكير في التالي : ما هي أنواع البيانات الممكن إدخالها في خلايا جدول البيانات ؟ وكيف يمكنك استخدامها ؟ أنت تعرف أنه يمكنك إدخال الأرقام والنصوص في أي خلية من خلايا جداول بيانات إكسيل ... - أيضا فإنك تعلم أو ربما لا تعلم أن تنسيق خلايا جداول البيانات يمكن تغييره إلى عدة احتمالات ممكنة ، فعلى سبيل المثال يمكن تنسيق الأرقام لتصبح غامق Bold في تنسيق نمط الخط أو أحمر في تنسيق لون الخط ، يمكن تنسيقه أيضا على اعتبار أن قيمته تمثل عملة أو كنسبة مئوية ، كذلك يمكن تحويل النص الذي تم إدخاله تلقائيا إلى تاريخ أو وقت ، كما أن محتويات أي خلية من خلايا جداول البيانات يمكن تغييرها أو حذفها في أي وقت .. 1) إعلان المتغيرات Declaring Variables - عملية إعلان المتغيرات هي أن تخبر الكمبيوتر بأن يحجز مكان في الذاكرة لاستخدامه فيما بعد ، وكنتيجة لذلك تعمل أكواد VBA بطريقة أكثر كفاءة ، لإعلان متغير في الكود استخدم تعبير ( DIM ) وهو اختصار لـ ( Dimension ) . Dim myVar As Integer - واسم المتغير هنا ( myVar ) ، وكما ترى فهو : 1- يبدأ بحرف أبجدي . 2- لا يتجاوز 255 حرف . 3- لا يحتوى على فواصل . - لا تستخدم علامات الترقيم أو الحروف غير الاعتيادية الأخرى في اسم المتغير . - استخدام الرمز underscore ( _ ) يسمح به ويعمل بشكل جيد لفصل العديد من الكلمات الواردة في اسم متغير واحد ، ومثال على ذلك ( Car_Type ) . - لا تستخدم كلمات رئيسية محفوظة في VBA لتسمية متغير ، كما لا تستخدم نفس الاسم الواحد أكثر من مرة في نطاق أكواد واحد ( سيناقش لاحقا في هذا الجزء ) ، وكالعرف المتبع أو كتقليد متبع فإنه يجب أن يكون اسم المتغير واصفا لعمله ، على سبيل المثال إذا كنت تستخدم متغير خاص بأنواع السيارات فإنه من الأفضل أن يكون اسم المتغير CarType أو carType ، ويفضل أن يبدأ اسم المتغير بحروف صغير ( small ) ولبداية الأسماء التالية حروف كبيرة ، حاول أن تختصر الأسماء قدر الإمكان بحيث يكون واضحا . - ومن الصواب إتباع الأعراف السائدة في تسمية المتغيرات والتي لا تتعارض مع قواعد VBA لتأكيد إعلان المتغيرات بشكل واضح ومفهوم ، استخدم الخيار Explicit في أول بيان في الموديول module قبل كتابة أي إجراء كالموجود بالشكل أسفل .. 2) مجال المتغير Variable Scope - ونطاق المتغير أو مجاله سواء الذي قد يكون متغير خاص أو عام Private or Public يشير إلى الوقت الذي يكون فيه المتغير متاحا أو مرئيا للبرنامج ، وعندما يكون المتغير داخل نطاقه ، فإنه يمكن الوصول إليه أو معالجته ، وعندما يكون المتغير خارج نطاقه فإنه يكون غير مرئي بالنسبة للبرنامج وبالتالي لا يمكن الوصول إليه . - وإعلان متغير ضمن كتلة إجراءات وأكواد VBA هو عبارة عن مستوى إجرائي متغير ، والمستوى الإجرائي المتغير يتم تنفيذه فقط وفق الإجراء الذي تم إعلان متغير عنه ، في الشكل أسفل ، فإن المتغير myVar4 يمكن للبرنامج رؤيته ومن ثم التعامل معه عندما يتم تنفيد الكود Activate() الخاص بورقة العمل .. - ما يحدث هو عند تنفيذ البرنامج للحدث Activate() فإن المتغير myVar4 يحجز حجما في الذاكرة ، إن تنفيذ البرنامج يتم عن طريق نواتج الأحداث المتتابعة حتى الوصول إلى سطر End Sub من الكود ، بعد ذلك يتم تفريغ الذاكرة من المساحة المخصصة للمتغير والتي لم تعد متاحة بعد ذلك ، في كل مرة يتم فيها تنفيذ البرنامج يتم حجز مساحة من الذاكرة وتفريغها مرة أخرى ، وبالتالي فإن myVar4 لن تحجز أو تحتفظ بقيمتها ما بين الاستدعاء والتنفيذ ... - في هذا الإجراء سيقون المتغير myVar4 بزيادة قيمته في كل مرة يتم فيها استدعاءه إلى أن يتم التنفيذ . - والمتغيران تم إعلانهما عن طريق الكلمات Dim و Private و Public ، وكلمتي (Private و Public ) يستخدمان للإعلان عن متغير عام ، والمتغير myVar5 تتضح رؤيته لأي من إجراءات الموديول ، في حين أن myVar4 فقط يمكن الوصول إليه بعد إجراء تفعيل ورقة العمل Activate() ، وتعد تلك المتغيرات التي تم إعلانها في قسم الإعلانات العامة عن طرق بكلمة Public تشير إلى شمولية أو عمومية ذلك المتغير . - لذلك فإن الكلمات الرئيسية ( Dim , Private ) لها نفس الوظيفة عند إعلان المتغير في القسم العام في أي موديول ، أما الكلمة الرئيسية Public يمكن استخدامها للإعلان عن متغير شامل ( global ) في أي موديول قياسي أو موديول خاص بكائن .1 point
-
نشكرك على هذه الخطوات الرائعة ونود المزيد عن النماذج والاستعلامات والتقارير وخاصة اننى اقوم بعمل قاعدة بيانات عن مركز للحاسب وأنا مبتدئة أرجو المزيد "المعلم الصغير"1 point