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

محمد حجازي

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

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

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

  • Days Won

    2

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

  1. السلام عليكم ... أرجو أن يكود الكود التالي هو ماتريد بالضبط: Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Column Case 1 Cells(Target.Row, 2).Select Case 2 Cells(Target.Row, 3).Select Case 3 Cells(Target.Row, 4).Select Case 4 Cells(Target.Row + 1, 1).Select End Select End Sub وبالنسبة لعدم السماح بإدخال أكثر من أربعة أرقام ، يمكنك معالجة ذلك عن طريق قاعدة التحقق من الصحة . بالتوفيق
  2. السلام عليكم ... أخ خضر الرجيبي ، لاحظ أنه عند تطبيق الجملة التالية: SELECT * FROM PM3 WHERE Mid(PNO,3,5)='10125'; نحصل على السجلات التي تحتوي على الشفرات AM10125A25 و A010125M2E في الحقل PNO ، بينما لا يظهر السجل صاحب الشفرة BLU10125KITS أبداً . تحياتي
  3. السلام عليكم ... ربما لم يستطع الأخ m.hindawi إيصال المعلومة بشكل صحيح ، لذلك سأشرح الموضوع بالتفصيل : الأخ m.hindawi يريد أن يستورد إلى الاكسل سجل معين من قاعدة بيانات وذلك عن طريق مايكرو معين ، وقد كتبت الكود التالي لحل مشكلته: Sub DAO1() Dim DB As Database Dim RS As Recordset Dim NumberRecorder As String Dim SQL As String Dim EndRow As Long Dim MyPath As String NumberRecorder = Application.InputBox(prompt:="أدخل رقم السجل", Title:="رقم السجل", Type:=2) If NumberRecorder = "False" Or NumberRecorder = "" Then Exit Sub MyPath = Workbooks("Labour.xls").Path & "\mh1.mdb" SQL = "SELECT * FROM PM3 WHERE PNO=" & NumberRecorder & ";" Set DB = OpenDatabase(MyPath, ReadOnly) Set RS = DB.OpenRecordset(SQL) EndRow = Sheets(1).Range("A1").CurrentRegion.Rows.Count Sheets(1).Cells(EndRow + 1, 1).CopyFromRecordset RS RS.Close DB.Close End Sub المايكرو السابق يعتمد على أدوات الإقحام DAO ، وDAO هي مجموعة من الأساليب الخاصة بالتعامل مع مصادر البيانات الخارجية (استيراد،إضافة،حذف،تغيير،...،الخ). المهم بالأمر أنه لاستيراد سجل معين يلزمنا وضع استعلام الـ SQL الذي سيتم على أساسه الاستيراد (أي أن الاستيراد سيتم لنواتج الاستعلام). لاحظ أنني في الكود السابق أسندت استعلام الـ SQL التالي في المتغير SQL: SELECT * FROM PM3 WHERE PNO='---رقم السجل---'; ولاحظ أنني مررت رقم السجل المكتوب في الحقل PNO إلى الاستعلام عن طريق المتغير NumberRecorder . الكود السابق كان مجهز في حالة كون السجل PNO يحتوي على أرقام فقط وأن كل رقم لا يمكن تكراره أكثر من مرة (أي باختصار يجب أن يكون الحقل PNO هو حقل ترقيم تلقائي) ، ولكن الأخ m.hindawi أخبرني بما يلي: و بما أنني في بداياتي مع الـ SQL وخبرتي في كتابة جمله ضعيفة جداً ، لذلك فقد نصحته بطرح التساؤل في منتدى الاكسس العام . المطلوب الآن هو : كتابة استعلام SQL لحل المشكلة السابقة ، وذلك حتى نستطيع تغيير الاستعلام القديم (الموجود في الكود) إلى الاستعلام الذي يستطيع تحديد السجل صاحب الشيفرة المعينة. أي إذا أدخل الشخص الشيفرة AJ1090A005 فإن الاستعلام يقوم بفرز البيانات ويظهر السجل صاحب هذه الشيفرة في الحقل PNO. وهنا يجب أن أنبه إلى أن الأسلوب CopyFromRecordset يقوم باستيراد جميع السجلات الناتجة عن الاستعلام (وليس سجل واحد) ، لذلك فيجب الانتباه إلى ضرورة كون ناتج الاستعلام عبارة عن سجل واحد فقط . مرفق بالملف المطلوب تعديله: mh1.zip
  4. السلام عليكم ... كرمالك مثالين مو مثال واحد :d Example.zip
  5. السلام عليكم ... ضعيه تحت الكود السابق (في الموديل) ، ومن ثم اذهبي إلى : Tools > Macro> Macros لتظهر لك نافذه يوجد فيها الإجراءات الموضوعة في الموديل ، شغلي ما تريدين منها.
  6. السلام عليكم ... يمكنك ذلك عن طريق الدالة DCOUNTA
  7. السلام عليكم ... أضيفي السطر التالي للكود السابق : Me.Range("B2:B20").Find(MyRondomValue).Select وذلك قبل السطر التالي مباشرة: MsgBox "الرقم هو" & " " & MyRondomValue, vbOKOnly, "فريق أوفيسنا"
  8. السلام عليكم ... يمكنك ذلك عن طريق الكود : Me.Close SaveChanges:=False وانتبه إلى تغيير القيمة المنطقية (TRUE / FALSE) حسب رغبتك (حفظ التغييرات من عدمها). بالتوفيق
  9. السلام عليكم ... اضغط على Alt+F11 وضع الكود التالي داخل الـ ThisWorkbook: Private Sub Workbook_BeforeClose(Cancel As Boolean) Me.Save End Sub
  10. السلام عليكم ... DAO هي مجموعة من الأساليب الخاصة بالتعامل مع مصادر البيانات الخارجية (استيراد،اضافة،حذف،تغيير،...،الخ). أما عن الخطأ الناتج عن السطر Dim DB As Database فهذا ناتج عن عدم تمكين المرجع DAO. في محرر الفيجوال ومن القائمة Tools انقر فوق References لتظهر لك نافذة ، تحت Available References أضف مكتبة الـ DAO. في المشاركة مرفق لمثال بسيط: :pp: DAO.zip
  11. السلام عليكم ... جرب التنسيق التالي: 000.00 وعدل المنازل قبل الفاصلة العشرية كما تريد.
  12. السلام عليكم ... بالنسبة للورقة التي فيها الرسم البياني فلا أئر لها على الكود المكتوب ، و الرسم البياني أتى مع الملف المرسل من قبل السائل. بالنسبة لتغيير موقع الرقم الموجود في الخلية H6 يمكنك ذلك بشرط تعيديل الكود ليشير إلى الخلية الجديدة (عدل القيمة $H$6 إلى دليل الخلية الجديدة).
  13. السلام عليكم ... بالنسبة للطريقة التقليدية فهي طويلة وتتطلب صيغة معقدة وهي أبطئ في التنفيذ. أما كود الفيجوال فهو أسرع وأسهل ، فقط جربي المرفق لتري مقدار المرونة في العمل. لا تنسي تخفيض مستوى الأمان عن طريق: أدوات > مايكرو > الأمان > مستوى منخفض. بالتوفيق Sort111.zip
  14. السلام عليكم ... يمكنك ذلك من أدوات > مايكرو > الأمان > مستوى منخفض
  15. السلام عليكم ... بالنسبة لعدم تداخل نتائج الفرز ، راجع الرابط التالي (آخر مشاركة): http://www.officena.net/ib/index.php?showtopic=5612 بالنسبة لعمل زر فرز ، أذكر بأن الأخ حسام نور قد قام بعمل مشابه لما تريد ، فقط قم بالبحث في قسم الاكسل لتجد العديد من المواضيع ذات الصلة.
  16. السلام عليكم ... من الممكن جعل الكود السابق أكثر كفاءة ، وذلك بتفادي تنشيط كل صورة قبل التعامل معها. الكود بعد التعديل: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$1" Then If Worksheets("m").Range("B1").Value > 30 Then Worksheets("m").Shapes("Picture 2").ZOrder msoBringToFront Else Worksheets("m").Shapes("Picture 1").ZOrder msoBringToFront End If Worksheets("m").Range("B1").Select Else Worksheets("m").Range("B3").Select End If End Sub
  17. السلام عليكم ... بالنسبة للصور تستطيع اضافتها بواسطة : Insert > Picture > From File الآن وبعد إدراج الصور ضعها فوق بعضها البعض وقم بتسميتها عن طريق تحديد كل صورة وتغيير اسمها من المربع الموجود على يسار شريط الصيغة. فكرة الكود تقوم على جعل الصورة المطلوبة في المقدمة. بالنسبة للتعامل مع النصوص ، بنفس طريقة التعامل مع الأرقام ولكن بوضع النص ضمن علامتي تنصيص مزدوجة " " ، ويمكن الاستعانة بجملة الشرط IF أو Select Case لمعرفة صنف الطعام المطلوب. بفرض أن لدينا 6 صور تم تسميتها من picture1 إلى picture6 وصورة سابعة (فارغة) تحت اسم Empty. الحل موجود في المرفق: Picture.zip
  18. السلام عليكم ... بالنسبة لـ 1 جربي الكود التالي: Sub Inquire() Dim MyRange As Range Set MyRange = Application.InputBox(prompt:="أدخل مجال الأرقام", Title:="تنقيح", Type:=8) If MyRange Is Nothing Then Exit Sub For Each MyCell In MyRange.Cells If Application.WorksheetFunction.CountIf(MyRange, MyCell.Value) > 1 Then MyCell.ClearContents End If Next MyCell End Sub وقومي بإزالة الفراغات بواسطة الكود الموجود في المشاركة التالية: http://www.officena.net/ib/index.php?showtopic=4883
  19. السلام عليكم ... ببساطة شديدة فإن Function تستخدم لإنشاء الدوال ، وهذه الدوال تعطينا قيماً معينة (مخرجات) نتيجة معالجتها لقيم أخرى (مدخلات) ، ويمكننا استخدام هذه الدوال سواءً في ورقة الاكسل (مثل الدوال الأخرى) أو داخل أكواد الفيجوال. أما Sub فهي مخصصة للقيام بوظيفة معينة ولكنها لا تستطيع إرجاع أية قيمة. لمزيد من التفاصيل راجع الرابط التالي: http://www.officena.net/ib/index.php?showtopic=425 يستخدم الـ Module من أجل احتضان أكواد الـ Sub و الـ Function ، وهنا يمكننا تشغيل هذه الأكواد بالاعتماد على عدد من الأساليب من بينها : ربط كود الـ Sub بزر أمر ، تحرير الدالة الموجودة في ورقة العمل أو تحرير الخلايا التي تعتبر مدخلات لها ، ... الخ. أما ThisWorkbook و باقي أوراق العمل (على اعتبار أن الـ Module هو بحد ذاته ورقة عمل في الاكسل) فتقوم بنفس عمل الـ Module وتزيد عنه باحتوائها على مجموعة متنوعة من الأحداث يمكن مشاهدتها في القائمة المنسدلة اليمينية الموجودة في أعلاه ، وهذه الأحداث يمكن ربطها بالأكواد : كحدث فتح مصنف العمل ، وحدث تغيير إحدى الخلايا ، ... ، الخ.
  20. السلام عليكم ... جرب الدالة التالية: =COUNTIF(D1:D6;"<"&D7)
  21. السلام عليكم ... بالنسبة لربط كل كمية برقم فأنا لا أعتقد أنها مجدية ، ويمكنك عوضاً عن ذلك وضع رسالة تنبيه كالتالي: Dim Qestion As Integer Qestion = MsgBox("أنت على وشك القيام بهذه العملية ، هل تريد المتابعة؟", vbYesNo, "حساب تكلفة البضاعة") If Qestion = vbYes Then 'ضع الكود هنا End If
  22. السلام عليكم ... الملف صاحب اللاحقة dbf خاص بتطبيق FoxPro (على ما أظن) ، ولم يسبق لي أن استخدمت هذا النوع ، ولكن على أية حال سأشرح لك كيفية عمل ما طلبت على ملف بلاحقة mdb. أولاً تأكد من وجود مرجع ADO معرف ، ومن ثم جرب الكود التالي: Sub ADO() Dim DB As Database Dim RS As Recordset Dim SQL As String Dim Endrow As Long SQL = "ضع الاستعلام هنا" Set DB = OpenDatabase("C:\M\mah.mdb") Set RS = DB.OpenRecordset(SQL) Endrow = Sheets(1).Range("A1").CurrentRegion.Rows.Count Sheets(1).Cells(Endrow + 1, 1).CopyFromRecordset RS RS.Close DB.Close End Sub
  23. السلام عليكم ... لدي عدد من الدعوات لبريد GMAIL ، فعلى من يرغب بالحصول على دعوة وضع عنوان بريده لأقوم بإرسالها له.
  24. السلام عليكم ... فقط وضحي ما تريدين: - هل تريدين إرجاع إحدى القيم الموجودة في الجدول بشكل عشوائي؟ - أم تريدين تعبئة الجدول بمجموعة من الأرقام العشوائية (الغير مكررة)؟
×
×
  • اضف...

Important Information