اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

محمد حجازي

المشرفين السابقين
  • Posts

    771
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    2

كل منشورات العضو محمد حجازي

  1. لسلام عليكم ... راجع الدروس الموجودة في الرابط التالي : http://www.officena.net/ib/index.php?showtopic=7914 فقد تجد شرحاً مصوراً لكيفية إنشاء القائمة المنسدلة .
  2. السلام عليكم ... ضع الكود التالي في الورقة الأولى : Private Sub Worksheet_Change(ByVal Target As Range) Sheets("Sheet2").Range("D4").Value = Now() End Sub هذا طبعاً على فرض أن الورقة الثانية موجودة باسم Sheet2.
  3. لسلام عليكم ... جرب هذا التعديل : حيث تستطيع تعديل اسم المستخدم وكلمة السر . فقط اضغط على زر تعديل البيانات لتظهر لك رسالة تأكيد ، اضغط على نعم و أدخل اسم المستخدم القديم وكلمة السر القديمة و اسم المستخدم الجديد و كلمة السر الجديدة. البيانات مخزنة في المجال A1:E3 الموجود الورقة UserName المخفاة و المحمية بكلمة المرور 111 . حاول الحصول على البيانات دون فك حماية الورقة و أخبرني في حال تمكنك من ذلك. :d Book11.rar
  4. السلام عليكم ... ضعي الصيغة التالية في الخلية S1 : =IF(ABS(A1-B1)>4;"X";"") وضعي الصيغة التالية في الخلية T1 : =IF(ABS(A1-B1)<=4;ABS( A1 + B1) /2;"") بالتوفيق
  5. السلام عليكم ... طبق يا أخي الطريقة التالية : قم أولاً برسم الفاتورة وجدول الخلاصة وضع كل واحد منهم في ورقة منفصلة : جدول الخلاصة يجب أن يحتوي على أعمدة تجهز لاستقبال البيانات التي تريد نقلها من بنود الفاتورة . (راجع المثال المبسط الموجود في المرفق) الكود هو التالي : Sub MoveData() Dim EndRow As Long EndRow = Sheets("List").Range("A1").CurrentRegion.Rows.Count Sheets("List").Cells(EndRow + 1, 1).Value = EndRow Sheets("List").Cells(EndRow + 1, 2).Value = Sheets("Invoice").Cells(3, 2).Value Sheets("List").Cells(EndRow + 1, 3).Value = Sheets("Invoice").Cells(3, 4).Value Sheets("List").Cells(EndRow + 1, 4).Value = Sheets("Invoice").Cells(5, 1).Value Sheets("List").Cells(EndRow + 1, 5).Value = Sheets("Invoice").Cells(6, 4).Value Sheets("List").Cells(EndRow + 1, 6).Value = Sheets("Invoice").Cells(8, 2).Value Sheets("List").Cells(EndRow + 1, 7).Value = Sheets("Invoice").Cells(8, 4).Value Sheets("Invoice").Range("B3,D3,A5:D5,D6,B8,D8").ClearContents End Sub لاحظ يا أخي ما يلي : EndRow = Sheets("List").Range("A1").CurrentRegion.Rows.Count وضعنا في المتغير EndRow رقم آخر سطر مليئ في جدول الخلاصة . Sheets("List").Cells(EndRow + 1, 1).Value = EndRow و اللآن سنقوم بإدراج البيانات في أول سطر فارغ موجود في ورقة الخلاصة List (وذلك بالاعتماد على الرقم المخزن داخل المتغير EndRow ). Sheets("List").Cells(EndRow + 1, 1).Value = EndRow هنا أدرجنا الترقيم التلقائي . Sheets("List").Cells(EndRow + 1, 2).Value = Sheets("Invoice").Cells(3, 2).Value وهنا أدرجنا اسم الزبون . وهكذا للبقية ... لاحظ أخي أننا استخدمنا التعليمة Cells للإشارة إلى الخلايا المختلفة (المدخل الأول هو رقم سطر الخلية ، و المدخل الثاني هو رقم عامود الخلية) ، ولاحظ أنه يجب علينا الإشارة للأوراق المطلوبة عن طريق التعليمة Sheets . Sheets("Invoice").Range("B3,D3,A5:D5,D6,B8,D8").ClearContents هنا قمنا بحذف جميع البيانات الموجودة داخل النطاقات B3,D3,A5:D5,D6,B8,D8 . يمكنك إنشاء برنامج شبيه بهذا إذا اتبعت نفس الخطوات . ملاحظة : لقد توخيت البساطة في كتابة الكود و في انتقاء عبارات الشرح و ذلك لخدمة عملية الشرح . بالتوفيق invoice.rar
  6. السلام عليكم ... ضع الكود التالي في الـ ThisWorkbook : من أجل الخروج وحفظ التعديلات دون ظهور رسالة مطالبة بذلك : Private Sub Workbook_BeforeClose(Cancel As Boolean) Me.Save End Sub من أجل الخروج مع عدم حفظ التعديلات دون ظهور رسالة مطالبة بذلك : Private Sub Workbook_BeforeClose(Cancel As Boolean) With Application If Workbooks.Count = 1 Then .DisplayAlerts = False .Quit Else .EnableEvents = False Me.Close SaveChanges:=False End If End With End Sub الكود الثاني يسبب بعض المشاكل في حالة استخدام عدة مصنفات في آن واحد :) ولكن سأحاول البحث عن طريقة لتفادي هذه المشاكل. بالتوفيق
  7. السلام عليكم ... يمكنك إن شاء الله ايصال المعلومة بشكل كامل . فقط قم بوضع مثال عن حالتك في ملف وضمّن الشرح فيه ، ومن ثم أدرجه في قسم التحميل المؤقت وضع رابط له في هذا الموضوع . بالتوفيق
  8. السلام عليكم ... لم أفهم قصدك بالضبط ! قد تكون الصيغة التالية هي طلبك : =F2-G2 أما المجموع فهو كالتالي : =SUM(E4:E65536) بالتوفيق
  9. السلام عليكم ... أتمنى أن يكون في موضوع مستقل و على هيئة مشروع يشارك فيه من يرغب بذلك (على غرار مشروع أوقات الصلاة المنفذ في قسم الاكسس) ، يثبت هذا المشروع وتوزع المهام على المشاركين وذلك حتى نصل إلى برنامج متكامل. هذا تصوري ، وطبعاً الباب مفتوح لباقي الأعضاء من أجل طرح أفكارهم تحياتي
  10. السلام عليكم ... طريقة أخرى عن طريق إنشاء دالة جاهزة : http://www.officena.net/ib/index.php?showtopic=4100 بالتوفيق
  11. السلام عليكم ... كما يمكنك الاستعانة بالتعليمة Shell لأداء نفس المهمة : Sub TurnOn() Dim RetVal As Double RetVal = Shell("C:\WINDOWS\system32\calc.exe", 1) End Sub أما بالنسبة للرقم الموجود في المدخل الثاني للتعليمة Shell فهو يخص الهيئة التي ستكون عليها نافذة البرنامج المفتوح (الأرقام وما يقابلها من ثوابت) : الرقم (0) : vbHide الرقم (1) : vbNormalFocus الرقم (2) : vbMinimizedFocus الرقم (3) : vbMaximizedFocus الرقم (4) : vbNormalNoFocus الرقم (6) : vbMinimizedNoFocus
  12. السلام عليكم ... إذا كنت من المطلعين على لغة الفيجوال بيسك ، فهذه مقالة للأخ تركي العسيري مدعمة بمثال عملي ، تشرح كيفية عمل برنامج جداول الكترونية شبيه بالاكسل ولكنه بسيط إلى حد ما . VB_Excel.rar
  13. السلام عليكم ... راجع الرابط التالي : http://www.officena.net/ib/index.php?showtopic=4624
  14. السلام عليكم ... الدالة Sum تستخدم لجمع النطاق الذي بداخلها ، أما 65536 فهو العدد الأقصى للصفوف الموجودة في الورقة الواحدة. بالتوفيق FILE__OFFICE.rar
  15. السلام عليكم ... راجع الرابط التالي : http://www.officena.net/ib/index.php?showtopic=7900&st=0
  16. السلام عليكم ... يمكنك نسخ ورقة العمل كل خمس دقائق : Private RunWhen As Double Public Sub RunCopy() With Workbooks("CopySheet") .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count) .Sheets("Sheet1").Activate .Sheets(.Sheets.Count).Name = Replace(Time(), ":", "-", 1, -1) End With RunWhen = Now + TimeSerial(0, 0, 5) Application.OnTime RunWhen, "RunCopy", , True End Sub Public Sub StopCopy() On Error Resume Next Application.OnTime RunWhen, "RunCopy", , False RunWhen = 0 End Sub مرفق مثال بسيط CopySheet.rar
  17. السلام عليكم ... الأخ baran : يمكنك وضع مجال أقصى منذ البداية بحيث تندرج ضمنه الإدخالات الجديدة . للأسف فإن هذه الميزة غير موجودة في الأداة القياسية داخل الاكسل 2003.
  18. السلام عليكم ... أخي الكريم ، من بين الحلول المقترحة إنشاء دالة جديدة (الدالة iff مثلاً) : Function iff(Logical_test As Boolean, Value_if_true) Static iff_value If Logical_test = True Then iff = Value_if_true iff_value = iff Else iff = iff_value End If End Function (مرفق ملف يحتوي على تصور بسيط لهذه الدالة) ولكن المشكلة تكمن بأن القيمة المخزنة في المتغير iff_value ستفقد عند إغلاق الملف ، ولذلك فقد فكرت في تخزين القيمة السابقة في خلية أخرى ولكني تذكرت حينها أن الدوال لا يمكنها إجراء أي تعديل على خلايا العمل الأخرى بما في ذلك تعديل القيم الموجودة بداخلها. المهم ، يمكنك يا أخي حل المشكلة عن طريق إجراء و ليس دالة ، وهنا فإنك تحتاج لتحديد الحدث الذي سينفذ الإجراء عند تفجيره (الضغط على زر أمر ، تعديل أحد الخلايا ، .... ، الخ). زودني بالحدث الذي تريد لأكتب لك الكود اللازم. بالتوفيق iff.rar
  19. السلام عليكم ... شكراً لك أخ مصعب ، وبالفعل فإن طريقتك هي الأضمن (y) ولكن عندي إضافة بسيطة : قد تتسبب الأكواد السابقة في بعض الأخطاء عند تشغيل أكثر من ملف اكسل معاً ، و الحل يكمن بالاعتماد على اسم الملف الذي يحتوي على الكود عند الإشارة للأهداف المختلفة ، كأن نكتب : Workbooks("Book1").Sheets("data").Cells(1, 1).Value بدلاً من : Sheets("data").Cells(1, 1).Value تحياتي
  20. السلام عليكم ... إن شاء الله سينقوم بإنشاء دالة جاهزة و لكن لي استفسار : هل المادة الواحدة مقسمة على الفصلين و أين ستضع مواد الحمل . الرجاء ارفاق مثال مبسط إذا كان الملف السابق لا يفي بالغرض
  21. السلام عليكم ... اعتمد في ذلك على الدالة VLOOKUP ، راجع الرابط التالي : http://www.officena.net/ib/index.php?showtopic=4570
  22. السلام عليكم ... الحل لهذه المشكلة يكمن في حماية الورقة و إزالة الحماية عند تحريك النص فقط ومن ثم حمايتها مرة أخرى . و بالتالي فإنك ستحتاج لإضافة السطرين التاليين للكود : ActiveSheet.Unprotect Password:="123" ActiveSheet.Protect Password:="123" لاحظ أخي أن كلمة السر هي 123. و بذلك فإنك ستضيف هذين السطرين للكودين السابقين على النحو التالي : الكود الأول : .Unprotect Password:="123" .Range("A3").Value = Left(Title, i) .Protect Password:="123" الكود الثاني : With Sheets("ورقة1") .Unprotect Password:="123" .Range("A3").Value = Left(Title, i) .Protect Password:="123" End With بالتوفيق
  23. السلام عليكم ... الرجاء شرح الصورة بشكل واضح : هل يوجد نظام الحمل ، هل يوجد مواد أساسية (مرسبة) ، ... ، الخ.
  24. للأسف يا أخي ، بالنسبة للطريقة الجديدة لم أستطع تخفيض مدة الانتظار إلى أقل من ثانية واحدة. :) بسيطة ، فقط غير محاذات الخلية A3 إلى اليمين ، راجع المرفق الموجود في هذا الرد. في الروابط التالية بعض الكتب الخاصة بالـ VBa: http://www.officena.net/ib/index.php?showtopic=206 http://www.officena.net/ib/index.php?showtopic=7914 و في الرابط التالي سلسلة للأخ هنداوي قد بدأ بها من فترة وجيزة ، تابعها : http://www.officena.net/ib/index.php?showtopic=7987 ومن ثم اقرأ الموضوعات التالية بالإضافة لقراءة النصوص التي يوفرها لك نظام المساعدة الموجود في محرر الفيجوال : http://www.officena.net/ib/index.php?showtopic=5827 http://www.officena.net/ib/index.php?showtopic=7653 بالتوفيق TextMove1.rar
  25. السلام عليكم ... ضع الصيغة التالية في ورقة (النتيجة النهائية) و في الخلية M8 : =IF(OR(L8<350;الشهادة!AC1<175;الشهادة!AD1<175);"راسب";"ناجح") أرجو أن لا أكون قد أخطأت في الصيغة السابقة :h
×
×
  • اضف...

Important Information