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

نجوم المشاركات

  1. ياسر العربى

    ياسر العربى

    الخبراء


    • نقاط

      16

    • Posts

      1,510


  2. الصـقر

    الصـقر

    الخبراء


    • نقاط

      7

    • Posts

      1,836


  3. عبد العزيز البسكري

    • نقاط

      6

    • Posts

      1,352


  4. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      5

    • Posts

      9,814


Popular Content

Showing content with the highest reputation on 20 ديس, 2015 in all areas

  1. ولايهمك استاذنا اتفضل رابط ميديا فاير http://www.mediafire.com/download/7cxahz9knqc1m93/Office_2016_16.0.4229.1002_x86-x64_v2.8.iso
    3 points
  2. عمل ممتاز اخي الغالي ابو يوسف لمسات جميله وهي من اهم اعمدة المشروع الخاص بنا وهو ان يكون شكل المشروع اعني البرنامج ان يكون جذاب ويعطى انطباعا طيبا في النفس وبخصوص اللمسات يامعلمين بقي هرفق ليكم ملف به هدية لتجميل الفورم ومظهر البرنامج عموما وكدا يبقي سبقتوا الشرح الاساسي في موضوع الردود نظرا لاجتيازكم مستوى الشرح بكثير اخي عبد العزيز سننطلق على بركة الله باذنه ومشيئته وانتظرو اللمسات الجمالية اتيه لكم لتبدعوا اكثر واكثر الهدية بها بعض العيوب البسيطة لا تظهر الليبل العادي وقت تشغيل البرنامج فيأتي معها ليبل مخصص يظهر باظهار الاداة الاداة image لاتظهر وقت تشغيل البرنامج تستبدل وتفى بالغرض مكانها الاداة Picture انتظرو المرفق لكم فائق احتراماتي
    3 points
  3. اعرض الملف برنامج حسابات البيع بالأجل والنقد الاصدار الاول لكل الاخوه في هذا المنتدى العملاق الذي تعلمت منه الكثير واليوم اهدي هذا العمل المتواضع وهو برنامج حسابات البيع بالأجل والنقد الاصدار الاول وهذا العمل مقارنة بأعمال عباقرة المنتدى نقطة في بحر منهم . شكر خاص للأستاذ الصقر. تحياتي محمد علي الطيب الرقم السري 123 صاحب الملف محمد علي الطيب تمت الاضافه 20 ديس, 2015 الاقسام قسم الإكسيل
    2 points
  4. تفضل اخي م/ ياسر لمسة صغيرة مني لاكمال المتصفح واحب ابشرك اخي عبد العزيز ان ما نراه الان هو 1/مليون من العالم الخيالي الجاي افضل ان شاء الله :) Internet Browser 1.rar
    2 points
  5. السّلام عليكم و رحمة الله و بركاته هديّة متواضعة ..مني إليكم .. لعل و عسى تنال إعجابكم .. للتكبير و التصغير بحجم الفورم ..إذهبْ طَوّالِي للرقم 20000 داخل الكود و قم بالتغيير دون المساس بجزء آخر فائق إحتراماتي الشاشة.rar
    2 points
  6. أخى ومعلمى القدير / ياسر العربى من عنيا أخى وحبيبى الغالى / عبد العزيز إنت تأمر الأكواد المستخدمة الكود الأول يوضع فى CommandButton1 Private Sub Command1_Click() text1.text="اكتب هنا ما تريد" End Sub والكود الثانى يوضع فى CommandButton2 Private Sub Command2_Click() Msgbox"أكتب ما تريد" End Sub والكود الثالث يوضع فى CommandButton3 Private Sub Command3_Click() End End Sub تقبلوا خالص تحياتى وتقديرى
    2 points
  7. الكود هو Set sa = Sheets("1") Set sh = Sheets("2") sh.Cells(2, 2) = sa.Cells(2, 2) sh.Cells(2, 3) = sa.Cells(2, 3) sh.Cells(2, 4) = sa.Cells(2, 4) sh.Cells(2, 5) = sa.Cells(2, 5) sh.Activate لم تغير شيء فيه كما هو الصح كالتالي Sub dd() Set Sa = Sheets("1") Set sh = Sheets("2") With Sa .Cells(2, 2).Copy sh.Cells(2, 2) .Cells(2, 3).Copy sh.Cells(2, 3) .Cells(2, 4).Copy sh.Cells(2, 4) .Cells(2, 5).Copy sh.Cells(2, 5) End With sh.Activate End Sub او هكذا كإختصار الاسطر Sub dd() Set Sa = Sheets("1") Set sh = Sheets("2") With Sa Union(.Cells(2, 2), .Cells(2, 3), .Cells(2, 4), .Cells(2, 5)).Copy sh.Cells(2, 2) End With sh.Activate End Sub تحياتي
    2 points
  8. تفضلو هدية اللمسات الجمالية وبلغوني رأيكم المهم تحملو الاداة من هنا اذا لم تجدوها ابحثو عنها Browse هتلاقوها في الهدية اللي بعتها اسمها actskin4.ocx هتظهر مثل الصورة والتوضيح بالمرفق لو عجبتكو الفكره ابعت ليكو مجموعه skin تقبلوا تحياتي هدية.rar
    2 points
  9. اخى الحبيب ضع هذه المعادله فى الخليه B2 ثم اسحبها بتجاه اليسار الى العمود O ثم اسحبها الى اسفل الى ما تريد من عدد الصفوف مرفق ملف تقبل تحياتى magid.zip
    2 points
  10. Private Sub Timer2_Timer() 'Label2 = Format(Now, "dddd yyyy/mm/dd") Label2 = Format(Now, "dddd dd/mm/yyyy") End Sub السّلام عليكم و رحمة الله و بركاته ماشاء الله تبارك الله أستاذي القدير " محمد حسن المحمد " لك لمسات فنيّة رائعة واصل المشوار معنا و لا تتركنا وحدنا وفّقك الله للتدرّب أكثر قمت بتغيير طفيف ليظهر التاريخ بتنسيق عربي من اليمين إلى اليسار فائق إحتراماتي السّلام عليكم و رحمة الله و بركاته أستاذنا القدير " ياسر العربي " بارك الله فيك و جزاك الله خيرًا و زادك من علمه و فضله و جعل كل حرف ممّا تقدّمه و تبذله بألف حسنة رأيي أن نكمل المشوار على بركة الله بدأنا المسيرة و أنتَ قائدنا .. أتمنى و أدعو الله ألاّ تتركنا في بداية الطريق لا تقلق على الاكسل أبدًا .. فلنا عيْنٌ في القدسْ و أخرى في نابلسْ فائق إحتراماتي
    2 points
  11. السلام عليكم ورحمة الله وبركاته إخوتي الكرام أستاذي الكريم ياسر العربي أشكركم على جهودكم المبذولة قمت بإنشاء ملف يحتوي على نموذجين(2فورم) الأول: يحتوي على الوقت والتاريخ تلقائي بمجرد فتحه وعلى كومبوبوكس يفتح الفورم الثاني. الثاني: يحتوي على رسالة شكر ومحبة لكم. للأسف اكتفيت بالصورة لأن كمبيوتر البيت بآخر أيامه يكاد يلفظ أنفاسه اﻷخيرة بسبب اﻷولاد الصغار. تقبلوا تحياتي العطرة.. والسلام عليكم. تحية لأوفيسنا.rar
    2 points
  12. بسم الله الرحمن الرحيم تحية طيبة وبعد:/ اليوم اعرض عليكم برنامج لاستخراج ملفات الاكسيل العادية من الملفات التنفيذية بكل يسر وسهولة قد قمت بتصميم هذا البرنامج منذ فترة ولكن هناك ما يجعلني متردد في عرضه وطرحه داخل المنتدى لاني ارى ان معظم المتواجدون يتعلقوا باي كلمة فيها اسم عمل حماية للاكسيل وليس فك حماية فاليوم اعرض عليكم شكل البرنامج وطريقة عمله فقط لابداء الرأي فيه واقتراح وضعه ام اتحفظ عليه وابعاده لانه هيبقي محبط لمعظم الاخوة الذين كانو يبحثون عن الحماية داخل الملفات التنفيذية البرنامج قمت بتجربة علي معظم برامج التحويل وليس كلها يعني ممكن والله اعلم ان لا يعمل مع برامج تحويل اخري ولكن علي يقين اني استطيع فكهم ايضا باذن الله ولكن يبقي القرار قراركم الان البرنامج لا يحتاج الى عناء مجرد فتح الملف عن طريق البرنامج ولو الملف فيه اي مشكلة او غير متوافق اوي اي حاجه في اي حاجه بردو هنفك امه ونضغط علي استخراج ليتم جلب الملف الاصل للفولدر المرفق مع البرنامج yasser لكم مني كل الشكر والتقدير في انتظار القرار منكم ياسر العربي
    1 point
  13. ملف أكثر من الروعة أخي و أستاذي " ياسر فتحي البنا " بارك الله فيك و زادك من علمه و فضله يوم بعد يوم يزداد تمسكي بهذا العالم الخيالي البديع و المستوى الراقي الرّفيع فائق إعجاباتي
    1 point
  14. المشروع يا معلمى وقللى إيه رأيك Internet Browser 1.rar Internet Browser 1.rar Internet Browser 2.rar
    1 point
  15. حبيبى الغالى / ياسر العربى معزرة لعدم وصول معلومة حفظ المشروع كامل بالطريقة التى أرفقتها ولكن قرأت ردك بعد ان برمجت متصفح إنترنت وحفظته بنفس الطريقة السابقة سوف أعيد برمجته وأرفعة مرة أخرى بس قللى إيه رأيك ورأى أخويا عبد العزيز Internet Browser.rar أخى وحبيبى الغالى / عبد العزيز أكثر من رائع قنبلة فى عالم الفورم تقبل خالص تحياتى وتقديرى
    1 point
  16. ماشاء الله عليك أخوي رمهان ، مو طماع جعفر
    1 point
  17. استاذي الغالي رمهان بارك الله فيك بالنسبة للاستفسار الاول بخصوص تغيير الامتداد : للاسف لا يوجد خيارات هو فقط الامتداد accdc . ومشكور علي رايك الشخصي بخصوص التقسيم اليدوي . كل الشكر والتقدير
    1 point
  18. من اولها انفجار فورم الله ينور حبيبي طيب باذن الله نشوف الدرس المقبل التعامل مع الفورم تقبل تحياتي
    1 point
  19. السلام عليكم وانا كذلك لدي التصور البسيط عن الموضوع وهو خاصة على ما اعتقد بالشهادات الرقمية وهو احد اوجه الحماية وموافقة التطبيق لمستخدمه ! ولكن اليس لك المقدرة اخ وائل بتعديل امتداد الملف الى accdb ! وبعدين صدقني ماعمري استخدمت المعالج في تطبيق عملي ! نضع القاعدة بعيدا ثم نربط الجداول في المقدمة ويدويا ! تحياتي
    1 point
  20. اخي الغالي عبد العزيز انسخ الاداة الى المسارين c:\windows\syswow64\actskin4.ocx c:\windows\system32\actskin4.ocx وبعدها قم بتشغيل الملف المرسل لك كمسئول وهتظهر معاك رسالتين غير الرسالة دي تفيد ان تم تسجيل الاداة بنجاح وجرب بعد ذلك تضيفها في مشروعك كما سبق وبلغني اخي الغالي م/ياسر لك كل الشكر والتقدير شكرا علي التوضيح ولكن ما قصدته هو ارفاق الملف نفسه كاملا مثل هذا هدية.rar
    1 point
  21. أقدم لكم اليوم رسالة ترحيب من تصميمى من بعض ما تعلمته من شرح الأستاذ والمعلم القدير / ياسر العربى أرجوا أن تنال إعجابكم تعليقك يا أ / ياسر العربى على الفنش يهمنى Welcome Screen.rar
    1 point
  22. اخي عبد العزيز تفضل واي اداة تعمل معاك نفس الكلام دا تتحط في السيستم ويتم تسجيلها مثل هذه تسجيل الادوات فتح كمسئول.rar
    1 point
  23. اخي الغالي عبد العزيز انقل الاداة لملف السيستم ٣٢ هي فقط تحتاج للتسجيل لو تعرف تسجلها اعملها انا اتكلم من الموبيل شوية وبروح علي الجهاز وبشرح كيف تتعمل استاذي مختار شكرا لك لمرورك الكريم لك كل الشكر واالتقدير تقبل تحياتي
    1 point
  24. أهلا بك أستاذ عصام فى أوفيسنا . جرب الكود التالى Sub WorksheetSizes() Dim C As Range, Sh As Worksheet Dim Wb As String, Temp As String, sReport As String Application.ScreenUpdating = False Application.DisplayAlerts = False sReport = "حجم الأوراق" Wb = "mokhtar.xlsx" Temp = ThisWorkbook.Path & Application.PathSeparator & Wb On Error Resume Next Set Sh = Worksheets(sReport) If Sh Is Nothing Then With ThisWorkbook.Worksheets.Add(Before:=Worksheets(1)) .Name = sReport .Range("A1").Value = "اسم الشيت" .Range("B1").Value = "الحجم بالبايت تقريباً" End With End If On Error GoTo 0 With ThisWorkbook.Worksheets(sReport) .Select .Range("A1").CurrentRegion.Offset(1, 0).ClearContents Set C = .Range("A2") End With For Each Sh In ActiveWorkbook.Worksheets If Sh.Name <> sReport Then Sh.Copy ActiveWorkbook.SaveAs Temp ActiveWorkbook.Close SaveChanges:=False C.Offset(0, 0).Value = Sh.Name C.Offset(0, 1).Value = FileLen(Temp) Set C = C.Offset(1, 0) Kill Temp End If Next Sh Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
    1 point
  25. وعليكم السلام.. ابدء أخي ببناء الجداول على أكسس ليطبق ما تريد مع توضيح أكثر هل تقصد نفس السطر أي نفس الصف كما بالمرفق؟
    1 point
  26. تفضل اخى الكريم جرب الملف المرفق ان شاء الله ينال اعجابك انت خليت دماغى تلف تقبل تحياتى اختيار عشوائى.zip
    1 point
  27. حياك الله أخونا العود أبوخليل هذا قليل مقابل عطاءكم الكثير أخي عبدالرحمن الغالي ، شرفتنا جعفر
    1 point
  28. استاذنا وحبيبنا جعفر هدية قيمة ورائعة ، وتكثر الحاجة اليها جزاك الله خيرا , ورزقك من حيث لا تحتسب
    1 point
  29. ارفق مثال وبه اوراق للاشهر المعنيه كما في ملفك الاصلي اي مسميات الاوراق وماهي شروط الترحيل وضحها في المرفق شهرين وقلت وعدد 15 صفحه الشهرين تقصد لكل شهر ورقه وفي كل شهر 15 جدول ؟
    1 point
  30. اخى الحبيب جرب المرفق انا عملت لك فكره افضل بدون ازرار عملت لك فى الخليه c3 قائمة منسدله بها كل المواد عند اختيارك من القائمه ستجد تم اخفاء كل الاعمده ما عدا الماده التى تم اختياره بالقائمه هى فقط ظاهره واذا اردت اظهار كل الاعمده للمواد امسح محتوى الخليه c3 ( القائمه المنسدله) اجعلها فارغه ارجوا ان يكون الحل مناسب لك تقبل تحياتى اخفاء اعمدة.zip
    1 point
  31. بسم الله ما شاء الله عليكم الاخ الغالي م/ ياسر الاخ الغالي / عبد العزيز الاخ الغالي / ابو يوسف الله ينور عليكم بجد انتو كدا عديتو الشرح بكتير هاا يجماعه لما اخلص مبادئ الفيجوال وبداياته نربط الاكسيل ولا نستمتع بجمال البرمجة قليلا ؟؟؟؟ لانه طريق لو مشيتوا فيه هننسى الاكسيل شوية لان الاكسيل لا يمثل في البرنامج غير1% او اقل بكثير واخواتنا في قسم الاكسيس يحتاجوا ربط الفيجوال واعتماد الاكسيس كقاعدة بيانات اكثر مننا في الاكسيل ويكون اكثر احترافيه ايضا فماذا تقترحوا على اكمل مسيرة الفيجوال قليلا ام نحول المسار بعد الالمام بالبدايات وكان من الافضل عمل قسم للغات البرمجة مستقل حتى ناخد راحتنا
    1 point
  32. سماح هذه المرة استاذنا رمهان اتفضل اخونا الكريم date-time.rar وبرجاء المرة القادمة ارفاق مثال مع الاستفسار
    1 point
  33. اولا انا طالب علم مش استاذ يعنى اسمى محمد ثانيا الشكر لله سبحانه وتعالى اولا ثم بعد ذلك لكل اسااتذتنا الكرام فى هذا الصرح الشامخ وممتاز كويس التطبيق لكن ممكن اقول لك على حاجه جرب فى الكمبوبوكس بتاع الاسم اكتب اى اسم غلط وشوف الرساله اللى تطلع وجرب كده تكتب رقم جلوس غلط فى الكمبوبوكس بتاع رقم الجلوس وشوف الفرق
    1 point
  34. السلام عليكم أخي كريمو كنت اعتقد بأني جربت المرفق وكان يعمل بطريقة صحيحة ، ولكن الظاهر اني كنت مخطئ ، فاعتذر منك الان وبعد التعديل ، جربته ، والظاهر انه يعمل كما يجب ، ان شاء الله الان حين تضغط على الزر "معاينة التحويل" ، فالكود يبحث عن التاريخ (شهر - سنة) الذي في النموذج ، يبحث عنه في الجدول CCP ، فاذا وجده ، فيعطيك الخيار في تحديث رقم الحساب (اي انه لن يغير القيمة) ، واذا لم يجد التاريخ في الجدول ، فيعطيك الخيار في ادخال سجل جديد جعفر 288.krimo2015V2.mdb.zip
    1 point
  35. السلام عليكم أستاذ الظاهر ان موقع النور فيه نوع آخر من ملفات الاكسل ، والذي بشمل علامات لغتي الخالدة فقط ، عليه ، اليك طريقة استيرادهم ، بنفس الطريقة القديمة ، ولكن لجدول خاص به النموذج يطلب منك اختيار نوع ملف الاكسل ، والباقي يقوم الكود به . وهذا كود الاستيراد (طبعا هناك مجموعة من الاستعلامات في البرنامج): Option Compare Database Private Sub Browse_Click() Dim fpath As Variant With Application.FileDialog(3) .Title = "Choose File" .Filters.Clear .Filters.Add "Excel Files", "*.xls ; *.xlsx" '.Filters.Add "Excel Files", "*.csv" .AllowMultiSelect = False .InitialFileName = "" If .Show = -1 Then Me.txtPath = .SelectedItems(1) End If End With Exit Sub End Sub Private Sub ImportData_Click() If Me.frm_Which_Type = 0 Then 'the user didn't choose anything, let him know MsgBox "رجاء اختيار اي نوع من الملفات تريد ان تستورد" & vbCrLf & "Please Select an option" Exit Sub ElseIf Len(Me.txtPath & "") = 0 Then 'don't leave the path empty MsgBox "رجاء اختيار ملف الاكسل" & vbCrLf & "Please select an Excel file" Exit Sub End If '1 'Empty Table Degrees and tbl_Sheets ' CurrentDb.Execute ("Delete * From Degrees") ' CurrentDb.Execute ("Delete * From tbl_Sheets") '2 'import Sheets Dim blnHasFieldNames As Boolean, blnEXCEL As Boolean, blnReadOnly As Boolean Dim lngCount As Long Dim objExcel As Object, objWorkbook As Object Dim colWorksheets As Collection Dim strPathFile As String, strTable As String Dim strPassword As String ' Establish an EXCEL application object On Error Resume Next Set objExcel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objExcel = CreateObject("Excel.Application") blnEXCEL = True End If Err.Clear On Error GoTo 0 ' Change this next line to True if the first row in EXCEL worksheet ' has field names blnHasFieldNames = False ' Replace C:\Filename.xls with the actual path and filename strPathFile = Me.txtPath ' "C:\Filename.xls" ' Replace tablename with the real name of the table into which ' the data are to be imported strTable = "tbl_Sheets" '"tablename" ' Replace passwordtext with the real password; ' if there is no password, replace it with vbNullString constant ' (e.g., strPassword = vbNullString) strPassword = vbNullString '"passwordtext" blnReadOnly = True ' open EXCEL file in read-only mode ' Open the EXCEL file and read the worksheet names into a collection Set colWorksheets = New Collection Set objWorkbook = objExcel.Workbooks.Open(strPathFile, , blnReadOnly, , strPassword) For lngCount = 1 To objWorkbook.Worksheets.Count colWorksheets.Add objWorkbook.Worksheets(lngCount).Name Next lngCount ' Close the EXCEL file without saving the file, and clean up the EXCEL objects objWorkbook.Close False Set objWorkbook = Nothing If blnEXCEL = True Then objExcel.Quit Set objExcel = Nothing ' Import the data from each worksheet into the table For lngCount = colWorksheets.Count To 1 Step -1 'If lngCount <> 9 And lngCount <> 8 Then GoTo Next_lngCount '3 'Empty Table Degrees and tbl_Sheets 'j'CurrentDb.Execute ("Delete * From tbl_Sheets") CurrentDb.Execute ("Delete * From " & strTable) '-- '4 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames, colWorksheets(lngCount) & "$" '-- '5 If Me.frm_Which_Type = 2 Then 'the user choose Loqati ONLY add_Loqati = "_Loqati" Else add_Loqati = "" End If my_qry_Select = "qry_Select" & add_Loqati my_qry_Delete_Duplicate = "qry_Delete_Duplicate" & add_Loqati my_qry_Append = "qry_Append" & add_Loqati my_qry_Update_Sheet = "qry_Update_Sheet" & add_Loqati 'Delete Duplicate Dim rstQ As DAO.Recordset mySQL = "Select * From " & my_qry_Select Set rstQ = CurrentDb.OpenRecordset(mySQL) [F16] = rstQ![F16] [F8] = rstQ![F8] [F17] = rstQ![F17] [F29] = rstQ![F29] [F24] = rstQ![F24] rstQ.Close: Set rstQ = Nothing DoCmd.SetWarnings False DoCmd.OpenQuery my_qry_Delete_Duplicate DoCmd.SetWarnings True '------------- '6 'append the data DoCmd.SetWarnings False DoCmd.OpenQuery my_qry_Append DoCmd.SetWarnings True '------------- DoEvents Me.iSheet = colWorksheets.Count Me.iSheet2 = lngCount '------------- '7 'append the data DoCmd.SetWarnings False DoCmd.OpenQuery my_qry_Update_Sheet DoCmd.SetWarnings True '------------- '8 'empty tbl_Sheets CurrentDb.Execute ("Delete * From " & strTable) Next_lngCount: Next lngCount ' Delete the collection Set colWorksheets = Nothing MsgBox "Done" ' Uncomment out the next code step if you want to delete the ' EXCEL file after it's been imported ' Kill strPathFile End Sub جعفر 275.3.ImportDegrees.accdb.zip
    1 point
  36. اخي العزيز واحدة واحدة ناخد الامثلة والشرح رويدا رويدا حتى ياخذ كل جزء من الشرح مكانه في العقل والا تكون خناقة في راسك وصداع من الممكن ان تربط كمبوكس وليست بوكس وتكست بوكس مع بعضهما بدون قاعدة ولا شئ فقط ان كنت مستعجل شوف شروحات الفورم للاخ الصقر وطبق منها combo1 lممكن تضيف له بيانات عند فتح الفورم مثلا عن طريق additem ومثلها الليست واقعد قلب الادوات كدا مع نفسك حتى ياتي دورها واللي لم اخذ بالي منهم هم من لم يكن عندهم علم اساسا بلغة vba فبالتالي لن يعرفو الادوات والبدايات مما يجعلني اقوم بتوضيح اكتر مره اخرى وتاكيد المعلومات
    1 point
  37. اخى الحبيب السلام عليكم جرب هذا الحل محاصيل.rar
    1 point
  38. اتجاهنا لازم يكون نحو أسلحة الدمار الشامل وبعدين محدش هياخد خبر من الصعيد إلا إذا فيه حد فتن علينا .. تقبل تحياتي أخي وحبيبي مختار (لازم أسايسك عشان متفتنش عليا)
    1 point
  39. السلام عليكم المصفوفات الجداول تعريف مبسط : التعامل مع اكثر من قيمة واحدة تطبيقات عملية الدرس الاول : المصفوفات Arrays rArr = Array("A", "B", "C") اذا اردنا ان نضع الصفيف هذا على صف واحد وثلائة اعمدة Sub kh_1() Dim rArr rArr = Array("A", "B", "C") Range("A1").Resize(1, 3).Value = rArr End Sub اذا اردنا ان نضع الصفيف هذا على ثلاثة صفوف وعمود واحد تعرفون الدالة TRANSPOSE إرجاع نطاق خلايا عمودى كنطاق أفقي، أو بالعكس. يجب إدخال TRANSPOSE كصيغة صفيف في نطاق به نفس عدد الصفوف والأعمدة، على الترتيب، مثل صفيف الأعمدة والصفوف الخاصة به. استخدم TRANSPOSE لتبديل الاتجاه العمودي والأفقي لصفيف في ورقة عمل. بناء الجملة TRANSPOSE(array) Array (الصفيف) هو الصفيف أو نطاق الخلايا في ورقة العمل التي ترغب في تحويلها. يتم إنشاء تحويل الصفيف باستخدام الصف الأول للصفيف على أنه العمود الأول للصفيف الجديد، والصف الثاني للصفيف على أنه العمود الثاني للصفيف الجديد، وهكذا. ============================================================ Sub kh_2() Dim rArr rArr = Array("A", "B", "C") rArr = WorksheetFunction.Transpose(rArr) Range("A1").Resize(3, 1).Value = rArr End Sub يتبع لمتابعة الموضوع افضل ان تضعوا هذه الاكواد في ملف الان نقوم باضافة فورم ونضيف التالي ListBox1 CommandButton1 CommandButton2 اضف هذه الاكواد للفورم Private Sub CommandButton1_Click() Dim rArr rArr = Array("A", "B", "C") Me.ListBox1.List = rArr End Sub Private Sub CommandButton2_Click() Dim rArr rArr = Array("A", "B", "C") Me.ListBox1.Column = rArr End Sub Private Sub UserForm_Initialize() Me.ListBox1.ColumnCount = 3 End Sub بعد فتح الفورم اضغط على الازرار CommandButton1 CommandButton2 ما هي النتيجة يتبع ============================================================= المصفوفة Array("A", "B", "C") من النوع Variant وذو البعد الواحد واول دليل لعناصرها LBound صفر وآخر دليل لعناصرها UBound عدد عناصرها ناقص واحد ونضيف عناصرها دفعة واحدة ============================================================= بعض الدالات للسلاسل النصية تعطي نتائج صفيف مثل SPLIT FILTER ناخذ مثال عن SPLIT Sub kh_Split() Dim MyAr MyAr = Split("عبدالله علي احمد باقشير") Range("A1").Resize(1, UBound(MyAr) + 1).Value = MyAr End Sub =========================================================== =========================================================== =========================================================== الدرس الثاني : الجداول المفهرسة عبارة عن متغيرات مفهرسة Indexed Variables تحتوي على بيانات عديدة من نفس النوع Data Type . كل مصفوفة لها اسم واحد يمكن استخدامه للرجوع إلى أي عنصر فيها وذلك باقتران هذا الاسم بدليل يمثل مكان العنصر فيها ، ويمكن انشاء مصفوفة لإحتواء أي نوع من أنواع البيانات مثل : النصوص والأعداد الحقيقية و الصحيحة وغيرها ، فأنواع البيانات المتوفرة في الفيجيوال بيسك هي : Data Type in VB: {Byte, Boolean, Integer, Long, Single, Double, Currency, Decimal, Date, Object, String, Variant, User-defined }. واستخدام المصفوفات في البرمجة يساعد في صناعة أكواد قصيرة وبسيطة ذات قوة كبيرة لأنه يمكن بناء Loops تتعامل بكفاءة مع المصفوفات مهما كان عدد عناصرها وذلك باستخدام دليل العنصر Index Number . ================================================= الخصائص الأساسية للمصفوفة في الفيجيوال بيسك : اسم المصفوفة يمثل عنوان Address في الذاكرة ؛ ولا يمكن تغييره أثناء تنفيذ البرنامج . يمكن الإعلان عن مصفوفة لأي نوع من أنواع البيانات بما في ذلك الأنواع المعرفة من قبل المستخدم User-defined type والـ Object Variables . كل وحدة بيانات منفردة في المصفوفة تسمى عنصر Element . جميع العناصر تكون من نفس النوع إلا في حالة الإعلان عن المصفوفة كـ Variant Data Type . جميع العناصر تكون مخزنة على التتابع في ذاكرة الحاسوب ودليل أول عنصر هو الصفر كـ Default ويمكن جعله 1 باستخدام جملة في بداية الوحدة النمطية Option Base 1 لكل مصفوفة حداً أعلى Upper bound ، وحداً أدنى Lower bound ؛ وعناصر المصفوفة تكون محصورة بين هذين الحدين . من الممكن أن تكون المصفوفة ذات بعد واحد أو متعددة الأبعاد . تحديد الحدين الأعلى والأدنى للمصفوفة Upper bound & Lower bound: عند الإعلان عن مصفوفة، يكتب الحد الأعلى بعد الاسم وبين الأقواس. لا يمكن أن يزيد الحد الأعلى عن نطاق نوع المتغير Long Data Type. الحد الأدنى الإفتراضي Default هو الصفر. اذا عرفت عن هذا المتحول بـــــ Limiteinf To LimiteSup في مكان الوسيط Indexs تكون قد عرفت جدولا بعدد عناصر محدد وبارقام دليل محددة وهذه الطريقة افضل للاستخدام للفهم السريع للوسيط Indexs Dim ay(1 To 3, 1 To 2) As String ----------------------------------------------------------------------------- ay(1 To 3, 1 To 2) لمعرفة الدليل الاول والاخير لليعد الملون بالاحمر للمتحول LBound(ay, 1) UBound(ay, 1) لمعرفة الدليل الاول والاخير للبعد الملون بالازرق للمتحول LBound(ay, 2) UBound(ay, 2) ================================================================== ================================================================== ملحوظة عند إضافة أبعاد المصفوفة فإن مساحة التخزين المطلوبة سوف تزيد زيادة كبيرة ولذلك ينبغي الاحتراس وتفادي استخدام النوع Variant قدر الإمكان لما يتطلبه من مساحة تخزينية كبيرة! ================================================================== ================================================================== المصفوفة ذات الحجم الثابت نعلن عنها بأحد أوامر الإعلان (Public or Private or Dim or Static) مع تحديد عدد العناصر في الأقواس Dim ay(1 To 3, 1 To 2) As String مثال 1: Sub kh_Array1() Dim ay(1 To 3, 1 To 2) As String ay(1, 1) = "A" ay(2, 1) = "B" ay(3, 1) = "C" ay(1, 2) = "D" ay(2, 2) = "E" ay(3, 2) = "F" Range("A1").Resize(3, 2).Value = ay End Sub مثال 2 جدول ضرب Sub KH_5() Dim sArr(1 To 12, 1 To 10) As Integer Dim ContRow As Integer, ContColmn As Integer Dim c As Integer, r As Integer ContRow = UBound(sArr, 1) ContColmn = UBound(sArr, 2) For r = 1 To ContRow For c = 1 To ContColmn sArr(r, c) = r * c Next Next Range("A1").Resize(ContRow, ContColmn).Value = sArr End Sub المصفوفات متغيرة الحجم Dynamic Array: في بعض الأحيان، لا نعرف مسبقاً حجم المصفوفة التي سنستخدمها في البرنامج بالضبط، وقد نريد تغيير حجم المصفوفة أثناء تشغيل البرنامج، هنا سنحتاج إلى المصفوفات ذات الحجم المتغير Dynamic حيث يمكننا تغيير حجمها في أي وقت. تعتبر المصفوفات متغيرة الحجم أحد مميزات الفيجيوال بيسك، وهي تساعد في تنظيم الذاكرة بكفاءة. فمثلاً، يمكن استخدام مصفوفة كبيرة لوقت قصير ثم إعادة تحجيمها لتحرير مساحة من الذاكرة عندما لا نحتاجها. وهذا من شأنه تسريع المعالجة. ولصناعة Dynamic Array نتبع التالي: نعلن عنها بأحد أوامر الإعلان (Public or Private or Dim or Static) ونجعلها ديناميكية بعدم كتابة أي رقم في الأقواس كما يوضح المثال التالي: Dim sArr() As String نعيد الإعلان عنها مع تحديد عدد العناصر باستخدام جملة ReDim كما في المثال التالي: ReDim sArr(1 To ContRow, 1 To ContColmn) ================================================================== ================================================================== ملاحظات هامة . كل جملة من جمل ReDim يمكنها تغيير عدد العناصر بالإضافة إلى الحد الأعلى والحد الأدنى لكل بعد للمصفوفة، ومع ذلك فإن عدد الأبعاد في المصفوفة لا يمكن تغييره. . تمحى جميع القيم المخزنة في المصفوفة كل مرة يعاد فيها تنفيذ جملة ReDim. ويجعل الفيجيوال بيسك القيم كالتالي: في حالة الــــ Variant Array --------- الى ----- Empty Value في حالة الــــ Numeric Array ------- الى ----- Zero في حالة الــــ String Array ----------- الى ----- Zero-Length String في حالة الــــ Array of objects ------ الى ----- Nothing وهذا مفيد عندما نريد تجهيز المصفوفة لبيانات جديدة أو عندما نريد اختزال حجم المصفوفة لتأخذ أقل مساحة ممكنة في الذاكرة. ================================================================== ================================================================== مثال 1: Sub KH_6() Dim sArr() As String Dim iName As String Dim ContRow As Integer, ContColmn As Integer Dim c As Integer, r As Integer, i As Integer Range("H7").Resize(14, 5).ClearContents iName = CStr([H4]) ContColmn = 5 With Range("B7").Resize(14, 1) ContRow = WorksheetFunction.CountIf(.Cells, iName) ReDim sArr(1 To ContRow, 1 To ContColmn) For r = 1 To .Rows.Count If CStr(.Cells(r, 1)) = iName Then i = i + 1 For c = 1 To ContColmn sArr(i, c) = CStr(.Cells(r, c)) Next End If Next End With Range("H7").Resize(ContRow, ContColmn).Value = sArr Erase sArr End Sub دروس المصفوفة 1.rar ================================================================== ================================================================== Erase تستخدم لتحرير الذاكرة المعينة للجداول الديناميكية واعادة تعيين عناصر الجدول الى قيمتها البدائية بطول ثابت مثال: Erase sArr ================================================================== ================================================================== تغيير حجم المصفوفة دون فقد بياناتها يمكننا فعل ذلك باستخدام جملة ReDim مع كلمة Preserve وتعني الحفظ الجملة التالية تغير حجم المصفوفة ولكنها لا تمحو العناصر الموجودة بها: ReDim Preserve MyArray( 10 ) والآن يمكننا كتابة ملخص متكامل لجملة ReDim. جملة ReDim: تستخدم في مستوى الـProcedure لإعادة تخصيص allocates مساحة تخزينية storage space لمصفوفة متغيرة الحجم Dynamic array. صيغتها Syntax: ReDim [Preserve] varname(subscripts) [As type] [, varname (subscripts) [As type]] ================================================================== ================================================================== ملاحظات هامة: جميع ما ذكر في الصيغة داخل قوسين مربعين [] يعتبر اختياري يمكن الاستغناء عنه حين عدم الحاجة إليه. تستخدم جملة ReDim لتحجيم أو إعادة تحجيم مصفوفة متغيرة الحجم Dynamic Array والتي بالفعل قد أعلن عنها مسبقاً باستخدام أي من الجمل Dim, Private, Public مع أقواس فارغة (أي بدون ذكر الأبعاد). يمكن تكرار استخدام جملة ReDim لتغيير عدد العناصر والأبعاد لمصفوفة، ومع ذلك لا يمكن الإعلان عن مصفوفة بنوع معين من البيانات ثم إعادة تعريفها لاحقاً مع تغيير نوع البيان لنوع آخر إلا إذا كانت المصفوفة محتواه في variant. إذا كانت المصفوفة محتواه في variant فإن نوع بيان العناصر يمكن أن يتغير باستخدام المقطع As Type إلا إذا استخدمنا كلمة Preserve ففي هذه الحالة لا يسمح بتغييرات. إذا استخدمنا كلمة Preserve يمكن فقط تحجيم البعد الأخير للمصفوفة ولا يمكن تغيير عدد الأبعاد على الإطلاق. إذا كان للمصفوفة بعد واحد فيمكن إعادة تحجيم هذا البعد لأنه البعد الأخير والوحيد بالمصفوفة. وإذا كان للمصفوفة بعدين أو أكثر فيمكن فقط تغيير حجم البعد الأخير مع الاحتفاظ بمحتويات المصفوفة. عندما نستخدم Preserve يمكن تغيير حجم المصفوفة بتغيير الحد الأعلى بينما ينتج لدينا خطأ حين تغيير الحد الأدنى. إذا صنعنا مصفوفة أصغر مما كانت فإن بيانات العناصر المخزنة سوف تفقد. تحذير: جملة ReDim ستعمل وكأنها جملة إعلان إذا كان المتغير (المصفوفة) التي تعلن عنه غير موجود على مستوى الـProcedure أو الـModule. وإذا كان هناك متغير آخر بنفس الاسم قد أنشئ بعد ذلك وحتى لو كان في النطاق ككل Scope؛ فإن ReDim سوف ترجع للمتغير الأخير ولن يتسبب عن ذلك خطأ في الترجمة Compilation error حتى ولو كانت جملة Option Explicit فعّالة. وبذلك لن يدرك المبرمج أنه هناك خطأ بالشيفرة code. ولتفادي هذا التعارض لا ينبغي استخدام جملة ReDim كجملة إعلان بدلاً من Dim مثلاً، ولكن نستخدمها فقط لإعادة تعريف حجم المصفوفة. ================================================================== ================================================================== توضيح اكثر لهذه الملاحظة إذا استخدمنا كلمة Preserve يمكن فقط تحجيم البعد الأخير للمصفوفة ولا يمكن تغيير عدد الأبعاد على الإطلاق. امثلة : للبعد الاخير ( الملون بالاحمر) هنا ثلاثة ابعاد البعد الاخير هو 15 ReDim Preserve X(10,12,15) ReDim Preserve X(10,12,15) هنا بعدين البعد الاخير هو 12 ReDim Preserve X(10,12) ReDim Preserve X(10,12) هنا بعد واحد إذا كان للمصفوفة بعد واحد فيمكن إعادة تحجيم هذا البعد لأنه البعد الأخير والوحيد بالمصفوفة ReDim Preserve X(10) ReDim Preserve X(10) حمل الملف الموجود في هذا الموضوع تطبيق عملي لما ذكر اعلاه http://www.officena....showtopic=42346 http://www.officena.net/ib/index.php?showtopic=42584 دروس المصفوفة 1.rar kh_SumProduct.rar دروس المصفوفة ( دالة لتوليد ارقام عشوائية).rar ((الشرح العلمي منقول من هنا وهناك)) تم بحمد الله وشكره
    1 point
  40. بارك الله فيك أخي الحبيب المميز / استاذ محمود الشريف دائما تتحفنا بكل ما هو جديد وتوفر علينا الوقت والمجهود في البحث
    1 point
  41. أستاذنا / عبد الله باقشير ما هذه الدرر الباقشيرية التي تنثرها علينا بارك الله فيك وزادك علماً ورفعةً جزاك الله خير على ما تقدمه من هذه الدرر الثمينة و إلى المزيد إن شاء الله تليمذكم / الشهابي
    1 point
  42. السلام عليكم ابا ادم الكود كان ينقصه الاسم Sub hosami() Dim rng As Range On Error Resume Next Set rng = Range([a1], Cells(Range("a65536").End(xlUp).Row, 1)) For i = 1 To rng.Rows.Count If rng.Cells(i, 1) <> rng.Cells(i - 1, 1) + 1 Then _ Range("b1000").End(xlUp).Offset(1, 0) = rng.Cells(i - 1, 1) + 1 Next i End Sub جربه الان
    1 point
  43. تبارك الله ، نفع الله بعلمك أخي هشام أخي عماد ، مساء الخير حاولت التطبيق للكودين ولكنني لم أصل للنتائج التي تخيلتها من سؤال الأخ أسامة ، لعلني أخطأت بالتطبيق ، فهلا أسعفتنا بمرفق. جزيت خيرا...
    1 point
  44. السلام عليكم ما شاء الله عليك اخي هشام فين مخبي الحلاوة دي ............. ومن بعد اذنك لتعدد الحلول هنا كود لمعرفة الارقام الناقصة Dim c As Range On Error Resume Next Set rng = Range([a2], Cells([a1000].End(xlUp).Row, 1)) For Each c In rng If c <> c.Offset(-1, 0) + 1 Then [b1000].End(xlUp).Offset(1, 0) = c - 1 Next c وهنا ايضا كود اخر Dim rng As Range On Error Resume Next Set rng = Range([a1], Cells(Range("a65536").End(xlUp).Row, 1)) For i = 1 To rng.Rows.Count If rng.Cells(i, 1) <> rng.Cells(i - 1, 1) + 1 Then _ Range("b1000").End(xlUp).Offset(1, 0) = rng.Cells(i - 1, 1) + 1 Next i
    1 point
  45. السلام عليكم ======= هذا حل اخر بالتنسيقات الشرطية لتحديد اماكن القيم الناقصة فى المسلسل find miss n.rar
    1 point
  46. السلام عليكم ======== تفضل المرفق find series.rar
    1 point
  47. السلام عليكم ورحمة الله أخي الكريم، من الأحسن وضع نموذج في ملف لتسهل العمل عليها... إليك الملف الملف أين استعملت التنسيق الشرطي على الخلايا وكود صغير يوضع في ThisWorksheet... موفق إن شاء الله تلوين الصف والعمود.rar
    1 point
×
×
  • اضف...

Important Information