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

abouelhassan

05 عضو ذهبي
  • Posts

    2,854
  • تاريخ الانضمام

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

  • Days Won

    7

مشاركات المكتوبه بواسطه abouelhassan

  1. ```
       =UNIQUE(FILTER(A:A, (B:B>=تاريخ1)*(B:B<=تاريخ2)*(C:C="اسم المكتب")))
       ```
     

     

    1. قم بتنسيق البيانات في ورقة العمل بحيث تكون الأرقام في العمود A، تواريخ التاريخ في العمود B، وأسماء المكاتب في العمود C.

       ```

       حيث تحتاج إلى استبدال "تاريخ1" و "تاريخ2" بالتواريخ المرغوبة، و "اسم المكتب" بالاسم المناسب.

    3. اضغط على Enter لتطبيق الصيغة.

    هذه الصيغة ستقوم بجلب الأرقام بدون تكرار حسب التاريخين المحددين واسم المكتب.

    • Like 2
  2. في 6‏/2‏/2024 at 11:59, ابوخليل said:

    عدل جميع الخصائص في النماذج الى : سجل محرر

    كما في الصورة

    يوجد لديك اخطاء برمجية في المشروع .. تتبع الاخطاء في محرر الفيجوال  بواسطة : debug / compile

     

     

     

     

    Untitled.jpg

    السلام عليكم استاذي

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

  3. تلك الصيغة تستخدم في جداول البيانات في ، وتهدف إلى حساب مجموع لأرقام معينة استناداً إلى مجموعة من الشروط. في هذه الحالة، يتم تحديد المجموعة التي تريد جمع أرقامها في "range". ثم يحدد "criteria1" الشرط الذي يجب أن تلبيه الأرقام لتُضاف إلى المجموع، في هذا المثال هو ">100" لاستبعاد الأرقام من 1 إلى 100. وأما "criteria2" فهو الشرط الآخر الذي يجب أن تلبيه الأرقام لتُضاف إلى المجموع، في هذا المثال هو "<=100" لاستبعاد الأرقام من 1 إلى 100.

    • Like 3
  4.  شرح عمل الكود:

    1. يتم تعريف متغير `PreviousValue` كمتغير يخزن القيمة السابقة للخلية التي تم تغييرها.

    2. الجزء الرئيسي من الكود يأتي في الدالة `Worksheet_Change`، والتي تقوم بتنفيذ الإجراءات التالية:
       - تحديد ما إذا كانت الخلية المغيرة واحدة أو مجموعة خلايا، وإذا لم تكن فإن الدالة تخرج.
       - التحقق مما إذا كان التغيير يحدث داخل نطاق الخلايا المستخدمة في ورقة العمل.
       - تعطيل حدث تغيير الخلية مؤقتًا لتجنب تشغيل الكود بشكل لا نهائي.
       - إذا كانت القيمة الجديدة مختلفة عن القيمة السابقة، فإنه يتم استدعاء الدالة `LogChanges` لتسجيل التغيير.

    3. الدالة `LogChanges` تقوم بتسجيل التغيير في ورقة "Log" عن طريق إضافة تاريخ ووقت التغيير، وعنوان الخلية المتأثرة، والقيمة القديمة، والقيمة الجديدة.

    بهذه الطريقة، يتم تعقب التغييرات التي تحدث في الخلايا وتسجيلها في ورقة مخصصة تسمى "Log".

    إذا لم يعمل الكود، قد يكون هناك عدة أسباب لذلك، هي بعض النقاط التي يجب التحقق منها:

    1. **التأكد من تمكين ماكرو VBA**: تأكد من أن الوضع الموجود فيه Excel يسمح بتشغيل ماكرو VBA. يمكنك التحقق من ذلك في قسم إعدادات الأمان في Excel.

    2. **التحقق من وجود ورقة العمل "Log"**: تأكد من أنه تم إنشاء ورقة العمل "Log" بالطريقة الصحيحة وأن الاسم مكتوب بالشكل الصحيح.

    3. **التحقق من الكود الذي تم لصقه في وحدة الفبا**: تأكد من أن الكود تم لصقه في وحدة الفبا الصحيحة ولم يتم تعديله بطريقة تؤثر على عمله.

    4. **تفعيل الأحداث في Excel**: تأكد من أن الأحداث مفعلة في Excel. يمكنك التحقق من ذلك بالتأكد من أن خيار "EnableEvents" مفعل في الكود.

    5. **اختبار الكود خطوة بخطوة**: يمكنك استخدام محرر VBA لتنفيذ الكود خطوة بخطوة باستخدام زر التشغيل F8، وذلك لمعرفة ما إذا كان هناك أي أخطاء.

  5. 3 دقائق مضت, خالد المخزومي said:

    شكرا اخي الفاضل

    اي شخص لديه دراية بالاكسل سيقوم بتعطيل ما قمت به لذلك ان طلبت المساعدة بتنفيذ هذا الامر عن  طريق اكواد VBA 

    الاصل اخى أن نقوم بتقديم البسيط 

    وإليك المطلوب

    جرب

    Dim PreviousValue As Variant
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        On Error Resume Next
        If Target.Cells.Count > 1 Then Exit Sub
        If Not Intersect(Target, Me.UsedRange) Is Nothing Then
            Application.EnableEvents = False
            If PreviousValue <> Target.Value Then
                Call LogChanges(Target.Address, PreviousValue, Target.Value)
                PreviousValue = Target.Value
            End If
            Application.EnableEvents = True
        End If
    End Sub
    
    Sub LogChanges(ByVal TargetAddress As String, ByVal OldValue As Variant, ByVal NewValue As Variant)
        Dim wsLog As Worksheet
        Set wsLog = ThisWorkbook.Sheets("Log")
        
        With wsLog
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Now
            .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = TargetAddress
            .Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = OldValue
            .Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = NewValue
        End With
    End Sub

    الآن، قم بإضافة ورقة جديدة في ملف Excel واسمها "Log"، وهذه الورقة ستحتوي على تفاصيل التغييرات.

    عند كل مرة يتم فيها تغيير قيمة في ورقة العمل، سيتم تسجيل الوقت وعنوان الخلية والقيمة القديمة والجديدة في ورقة "Log".

    يرجى ملاحظة أنه يمكنك تعديل اسم ورقة العمل التي تحتوي على سجل التغييرات بحسب احتياجاتك.

    • Like 4
  6.  يمكن تبسيط الكود قليلاً لتحقيق التسهيل. فيما يلي نسخة مبسطة من الكود:
    
    
    Sub OpenExcelFileWithPermissions()
        Dim filePath As String
        Dim permissionType As Integer
        
        ' تحديد مسار الملف
        filePath = "C:\مسار\الملف.xlsx"
        
        ' اختيار نوع الصلاحية: 1 - للقراءة فقط، 2 - كل الصلاحيات متاحة، 3 - تعيين admin
        permissionType = 2
        
        ' فتح الملف بناء على الصلاحية المحددة
        Select Case permissionType
            Case 1
                Workbooks.Open filePath, ReadOnly:=True
            Case 3
                Workbooks.Open filePath
                SetAttr filePath, vbReadOnly
            Case Else
                Workbooks.Open filePath
        End Select
    End Sub
    ```
    
    هذا الكود يقوم بفتح الملف بناءً على الصلاحية المحددة دون الحاجة إلى إعادة فتح الملف مرتين للحالات 2 و 3. يجب على المستخدمين تعديل المسار المحدد في المتغير `filePath` ليناسب مسار الملف الخاص بهم.

    إذا كان الكود لا يعمل، فمن المحتمل أن هناك مشكلة تحتاج إلى التحقق منها. هنا بعض النقاط التي يجب التحقق منها:

    1. **المسار الصحيح للملف**: تأكد من أن المسار الذي تم تحديده في المتغير `filePath` يشير بالفعل إلى الملف Excel الذي تريد تطبيق الصلاحيات عليه. يجب أن يكون المسار مكتوب بشكل صحيح مع تحديد امتداد الملف (مثل .xlsx).

    2. **رسائل الخطأ**: هل تظهر أي رسائل خطأ عند تشغيل الكود؟ إذا كان الأمر كذلك، فما هي هذه الرسائل؟ قد توفر رسائل الخطأ معلومات مفيدة حول سبب عدم عمل الكود.

    3. **صلاحيات الملفات**: تحقق من أنك تمتلك الصلاحيات الكافية لفتح وتعديل الملف. قد تواجه مشكلة إذا كان الملف محميًا بكلمة مرور أو إذا كان لديك صلاحيات محدودة على المجلد الذي يحتوي على الملف.

    4. **إصدار VBA**: تأكد من أن الإصدار الخاص بـ VBA مفعل ويعمل بشكل صحيح على جهاز الكمبيوتر الخاص بك.

    5. **تعطيل الأمان**: قد تحتاج إلى التحقق مما إذا كانت إعدادات الأمان في Excel تمنع تشغيل الكود. قد تحتاج إلى تمكين الماكروهات والـ VBA في Excel.

    وانا موجود اخى بالخدمة 

    • Like 1
  7. 11 دقائق مضت, خالد المخزومي said:

    السلام عليكم ..اشكركم على محاولتكم مساعدتي ..لكن توجد امور غير مفهومة 

    كيف سيعلم الاكسس انني اربد تفعيل صلاحية للقراءة فقط اذا لم احدد انا اسم المستخدم وكلمة المرور ليعرف الاكسل ان هذا الشخص اعطيت له صلاحية القراءة فقط ..وهكذا بالنسبة لباقي الصلاحيات ..ان امكنكم كتابة مثال بالاكسل اكون من الشاكرين

     يمكنك نسخ الكود المذكور في إجابتي السابقة ولصقه في وحدة VBA في ملف Excel الخاص بك. بعد ذلك، يمكنك تعديل المسار المحدد إلى مسار ملف Excel الذي ترغب في تطبيق الصلاحيات عليه

    بالطبع، يُحقق الكود الصلاحيات المحددة عن طريق استخدام وظيفة `Workbooks.Open` في VBA، التي تسمح بفتح ملف Excel بصلاحيات معينة. 

    1. في البداية، يتم تعريف مسار الملف باستخدام متغير `filePath`.
    2. ثم يتم تحديد نوع الصلاحية المطلوبة باستخدام متغير `permissionType`.
    3. يتم استخدام بنية التحكم `Select Case` لتحديد الصلاحية المطلوبة وفتح الملف بناءً على ذلك.
    4. إذا كانت الصلاحية محددة كـ "للقراءة فقط" (permissionType = 1)، يتم فتح الملف مع الخاصية `ReadOnly:=True`، مما يعني أنه لا يمكن تعديل الملف.
    5. إذا كانت الصلاحية محددة كـ "كل الصلاحيات متاحة" (permissionType = 2)، يتم فتح الملف دون أي قيود.
    6. إذا كانت الصلاحية محددة كـ "تعيين admin" (permissionType = 3)، يتم فتح الملف ثم تعيين خاصية القراءة فقط للملف باستخدام `SetAttr`، مما يجعله لا يمكن تعديله إلا بإلغاء هذه الخاصية.

    هذا الكود يتيح لك التحكم في صلاحيات فتح الملف بشكل دقيق وفقًا للمتطلبات التي تحددها.

    • Like 1
  8. منذ ساعه, خالد المخزومي said:

    سلام الله على اخوتي و سادتي الاساتذة 

    ارجو منكم مساعدتي بتحديد صلاحيات في ملف اكسل مكون من ثلاث صلاحيات 

    1 - للقراءة فقط

    2- كل الصلاحيات متاحة

    3- تعيين admin

    من خلال ملف اكسل Excel VBA مفتوح لاتمكن من الاستفادة من الملف ..جعل الله هذه المساعدة في ميزان حسناتكم و جوزيتم الجنة ان شاء الله

    Sub SetPermissions()
        Dim filePath As String
        Dim permissionType As Integer
        
        ' تحديد مسار الملف
        filePath = "C:\مسار\الملف.xlsx"
        
        ' اختيار نوع الصلاحية: 1 - للقراءة فقط، 2 - كل الصلاحيات متاحة، 3 - تعيين admin
        permissionType = 2
        
        ' فتح الملف بناء على الصلاحية المحددة
        Select Case permissionType
            Case 1
                ' فتح الملف للقراءة فقط
                Workbooks.Open filePath, ReadOnly:=True
            Case 2
                ' فتح الملف بكل الصلاحيات
                Workbooks.Open filePath
            Case 3
                ' فتح الملف كمسؤول (admin)
                Workbooks.Open filePath
                SetAttr filePath, vbReadOnly
        End Select
    End Sub

    يرجى استبدال "C:\مسار\الملف.xlsx" بالمسار الفعلي لملف Excel الذي ترغب في تعيين الصلاحيات له.

     

    هذا الكود يفتح الملف بناءً على نوع الصلاحية المحددة وفقًا للخيارات التي قمت بتحديدها (للقراءة فقط، كل الصلاحيات متاحة، تعيين admin).

    احترامي وتقديري 

    • Like 1
  9. 56 دقائق مضت, خالد المخزومي said:

    السلام عليكم

    هلا تكرم علي اخوتي و اساتذتي بمثال حول تعقب التغييرات بالاكسل على ان يكون الملف مكتوب EXCEL VBA مفتوح المصدر

    حياكم الله وجعل مساعدتكم هذه في ميزان حسناتكم 

    يمكنك استخدام ميزة التعقب التغيرات في Excel لتسجيل التغييرات التي تحدث على الملف. يمكنك اتباع الخطوات التالية:

     

    1. افتح ملف Excel الخاص بك.

    2. انتقل إلى علامة التبويب "مراجعة" (Review).

    3. انقر على "تعقب التغييرات" (Track Changes).

    4. اختر "تعقب التغييرات" (Track Changes).

    5. في النافذة التي تظهر، حدد الخيارات التي تريدها، مثل تعقب الخلايا المحددة أو جميع الخلايا في الورقة.

    6. انقر على "موافق" (OK) لتفعيل التعقب.

    7. سيظهر Excel الآن رسالة تطلب منك حفظ الملف لتمكين التعقب. اضغط "موافق" (OK) لحفظ الملف.

     

    عندما يتم الآن إجراء أي تغييرات على الملف، ستظهر تلقائياً في صفحة جديدة تحت علامة التبويب "مراجعة" (Review) بعنوان "مسار التغييرات" (Changes History).

    احترامي وتقديري لك 

    • Like 1
  10. جرب

    
    Sub UpdateReport()
        Dim wsAllData As Worksheet
        Dim wsReport As Worksheet
        Dim lastRowAllData As Long
        Dim lastRowReport As Long
        Dim i As Long, j As Long
        
        ' تعيين الأوراق
        Set wsAllData = ThisWorkbook.Sheets("AllData")
        Set wsReport = ThisWorkbook.Sheets("Report")
        
        ' العثور على آخر صف في كل ورقة
        lastRowAllData = wsAllData.Cells(wsAllData.Rows.Count, "A").End(xlUp).Row
        lastRowReport = wsReport.Cells(wsReport.Rows.Count, "A").End(xlUp).Row
        
        ' مسح بيانات الورقة الثانية
        If lastRowReport > 1 Then
            wsReport.Range("A2:D" & lastRowReport).ClearContents
        End If
        
        ' البحث وتحديث بيانات الورقة الثانية
        For i = 2 To lastRowAllData
            For j = 2 To lastRowReport
                If wsAllData.Cells(i, 1).Value = wsReport.Cells(j, 1).Value Then
                    wsReport.Cells(j, 2).Value = wsAllData.Cells(i, 3).Value ' بداية التاريخ
                    wsReport.Cells(j, 3).Value = wsAllData.Cells(i, 4).Value ' نهاية التاريخ
                    wsReport.Cells(j, 4).Value = wsAllData.Cells(i, 5).Value ' نوع الاجازة
                End If
            Next j
        Next i
    End Sub

     

    • Like 1
  11. 4 ساعات مضت, hussam031 said:

    الاخوة الزملاء تحية طيبة

    لدي مشكلة في اعدادات اكسل، عند كتابة معادلة او عند التحرير للمعادلة ايضا تظهر الارقام باللغة العربية، كيف يمكن حل هذه المشكلة لانها تعكس شكل المعادلة 

    الشيئ الاخر، في قائمة تخطيط الصفحة Layout اختفى زر Sheet Right-to- Left

     

    مع الشكر الجزيل

    لحل مشكلة ظهور الأرقام باللغة العربية في Excel عند كتابة المعادلات أو التحرير، يمكنك اتباع الخطوات التالية:

     

    1. افتح Excel وانتقل إلى قائمة "ملف" (File) في شريط الأدوات العلوي.

    2. اختر "خيارات" (Options) من القائمة.

    3. انتقل إلى قسم "عام" (General) في النافذة الجديدة.

    4. تأكد من أن خيار "اللغة التلقائية" (Automatic language) مُعطل.

    5. قم بتحديد اللغة المفضلة لك في خانة "لغة التحرير" (Editing Language).

    6. اضغط على زر "موافق" (OK) لحفظ التغييرات.

     

    بالنسبة لمشكلة اختفاء زر "Sheet" في قائمة تخطيط الصفحة، يمكنك تجربة الخطوات التالية:

     

    1. افتح Excel وانتقل إلى قائمة "ملف" (File).

    2. اختر "خيارات" (Options) من القائمة.

    3. انتقل إلى قسم "شريط الأدوات الرئيسي" (Customize Ribbon).

    4. تحقق من وجود علامة اختيار أمام خيار "ورقة" (Sheet) في القائمة على اليمين.

    5. إذا لم يكن هناك علامة اختيار، قم بتحديدها.

    6. اضغط على زر "موافق" (OK) لحفظ التتغير

    • Like 1
  12. 7 ساعات مضت, 2saad said:

    اخواني اعضاء المنتدي الكرام بعد سلام الله عليكم ورحمة الله وبركاته

    لدي استفسار 

    عندي ملف به أراق عمل كثيرة وبه كود يخفي الأوراق ويظهر ورقة واحدة 

    السؤال : ليه عندما استدعي كود عن طريق اليوزر فورم يظهر خطأ ؟

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

    • Like 3
  13. 6 ساعات مضت, abed14092017 said:

    السلام عليكم اخوني 

    بعد اذنكم عندي نلف اكسل بداخله userform بضهار بيانات من صفحة اكسل 

    تنسيق البيانات في صفحة اكسل على سبيال المثال المبيعات 50.000

    لكن فب listbox بتضهر 50

    المطلوب : بدي كود يعمل تنسيق للبيانات داخل listbox 

    المبيعات و العمولة و صافي المبيعات يكون تنسيقها 0.000 

    سوال اخر هل ممكن اعمل زر ينقلني للخلية في الصفحة الاصلية عندما احددها من listbox 

     

    مع كل الاحترام و التقدير للجميع 

    Book1.xls 70.5 kB · 3 downloads

    جرب

    Private Sub UserForm_Initialize()
        Dim ws As Worksheet
        Dim lastRow As Long
        Dim i As Long
        
        ' تحديد ورقة العمل التي تحتوي على البيانات
        Set ws = ThisWorkbook.Sheets("Sheet1") ' قم بتغيير اسم الورقة حسب اسم ورقتك
        
        ' احتساب عدد الصفوف الممتلئة في العمود A
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        
        ' تحميل البيانات إلى ListBox وتنسيقها
        For i = 2 To lastRow ' افترضنا هنا أن البيانات تبدأ من الصف 2، يمكنك تغيير الرقم إذا لزم الأمر
            ListBox1.AddItem Format(ws.Cells(i, 1).Value, "0.000") ' المبيعات
            ListBox1.List(ListBox1.ListCount - 1, 1) = Format(ws.Cells(i, 2).Value, "0.000") ' العمولة
            ListBox1.List(ListBox1.ListCount - 1, 2) = Format(ws.Cells(i, 3).Value, "0.000") ' صافي المبيعات
        Next i
    End Sub
    
    Private Sub ListBox1_Click()
        Dim selectedRow As Long
        
        ' الحصول على الصف المحدد في ListBox
        selectedRow = ListBox1.ListIndex
        
        ' التحرك إلى الخلية المقابلة في ورقة العمل
        If selectedRow >= 0 Then
            ThisWorkbook.Sheets("Sheet1").Cells(selectedRow + 2, 1).Select ' نفترض أن البيانات تبدأ من الصف 2
        End If
    End Sub

     

    • Like 2
×
×
  • اضف...

Important Information