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

triste

03 عضو مميز
  • Posts

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

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

كل منشورات العضو triste

  1. السلام عليكم ورحمة الله وبركاته،، الأخوة الكرام : أريد أن يتم إظهر كلمة السر لتنفيذ (ماكرو) على شكل نجوم ، و أعلم أن هناك أكثر من موضوع بالمنتدى للإجابة عن أسئلة مماثلة و مرفق بها هذه الأكواد ، و لكنها طويلة و لا يستطيع المبتدئ - مثلى - التعامل معها ، خاصة لو كان الأمر يتطلب إدماجها مع كود موجود أصلاً بالفعل - كالذى لدى بالفعل و الذى يقوم بوظيفتى إظهار ال inputbox الذى يتم إدخال كلمة السر به و كذا فك الحماية عن جميع أوراق كتاب العمل دفعة واحدة بمجرد إدخال كلمة السر - و من ناحية أخرى فقد فكرت أنه لو كان هناك طريقة لعمل ماكرو للتحكم بلون ال (Font) الذى يتم كتابة كلمة السر به داخل ال inputbox و ذلك حتى يتعذر مجرد معرفة طول كلمة السر هذه إذا تم تحويل هذا اللون لنفس لون الخلفية التى يكتب عليها . هذا هو الكود الموجود أصلاً لدى (السابق الإشارة إليه) : Sub UNPROTECT() x = InputBox("xxxx", "please enter the password") If x = "zzzz" Then Dim password As Worksheet For Each password In ActiveWorkbook.Worksheets password.UNPROTECT password:="zzzz" Next password Else: Exit Sub End If End Sub و هذا هو كود تحويل (كلمة السر إلى نجوم) و هو - كما ترون ليس سهلاً: Option Explicit '//////////////////////////////////////////////////////////////////// 'Password masked inputbox 'Allows you to hide characters entered in a VBA Inputbox. ' 'Code written by Daniel Klann 'March 2003 '//////////////////////////////////////////////////////////////////// 'API functions to be used Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _ (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long 'Constants to be used in our API functions Private Const EM_SETPASSWORDCHAR = &HCC Private Const WH_CBT = 5 Private Const HCBT_ACTIVATE = 5 Private Const HC_ACTION = 0 Private hHook As Long Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim RetVal Dim strClassName As String, lngBuffer As Long If lngCode < HC_ACTION Then NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam) Exit Function End If strClassName = String$(256, " ") lngBuffer = 255 If lngCode = HCBT_ACTIVATE Then 'A window has been activated RetVal = GetClassName(wParam, strClassName, lngBuffer) If Left$(strClassName, RetVal) = "#32770" Then 'Class name of the Inputbox 'This changes the edit control so that it display the password character *. 'You can change the Asc("*") as you please. SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0 End If End If 'This line will ensure that any other hooks that may be in place are 'called correctly. CallNextHookEx hHook, lngCode, wParam, lParam End Function Public Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, _ Optional YPos, Optional HelpFile, Optional Context) As String Dim lngModHwnd As Long, lngThreadID As Long lngThreadID = GetCurrentThreadId lngModHwnd = GetModuleHandle(vbNullString) hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID) InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context) UnhookWindowsHookEx hHook End Function فهل هناك طريقة : إما للتحكم باللون ، أو لدمج الكودين معاً ؟؟
  2. لا طبعاً ، أخى الكريم فكلنا أخوة ، (و ربنا ما يجيبش زعل) ، و شكراً على ردك الكريم ، و توضيحك. و ما كنت أقصده ليس منع الإطلاع على صيغة (الموديول نفسه) كما تفضلت فى ردك الكريم ، و لكن منع تنفيذ الماكرو نفسه ، و قد وصلت إليها بعد عناء البحث :) فى مشاركة لأحد الإخوة - بارك الله فيه - بواسطة كود يتم كتابته بعد إسم الماكرو مباشرةً . و أصبح تنفيذ الماكرو الآن يعتمد على إدخال كلمة السر كى يتم التنفيذ . و اعذرنى إن كنت غير دقيق فى استخدامى للمصطلحات مثل (الماكرو و الموديول ) فى غير مواضعها كما يجب ، فلا زلت لم أتمكن بعد من هذه الأمور . و هذا هو رابط الموضوع (لاحظ الجزء الثانى منه تحديداً ) http://www.officena.net/ib/index.php?showtopic=1492&hl=
  3. و نفس عدم الإجابة ! و للعلم هو تكرار بالخطأ ، لم أتنبه له من قبل ، و يمكن للمشرف حذف أحد الموضوعين .
  4. AND(A$2>0;A1>=$A$2)+ على أساس أن A2 هى الخلية التى سيتم بها إدخال التاريخ ، A1 هى الخلية المرجعية
  5. أخيراً ضبط معى ، و كان السبب هو وجود كود آخر (Message Box) موضوع فى this work book أيضاً من قبل ، و قد احترت فيما يجب أن أفعله بهذا الكود (الموجود بالمشاركة هنا)فى بادئ الأمر !!!!!!!!!!! فتارة قمت بعمل new module ووضعت بها الكود .... و لم ينجح الأمر و تارة قمت بلصقه أسفل الكود الموجود أصلاً ........ و لم ينجح أيضاً الأمر . إلى أن هدانى تفكيرى أنه ربما لا يجوز وجود كودين بهما سطر البداية Private Sub Workbook_Open() و سطر النهاية End Sub أسفل بعضهما البعض ، حتى لا تتكرر هذه الأوامر ( و كان هذا مجرد استناد للمنطق من جانبى ليس أكثر) فقمت بحذف هذه التكرارات ، و أصبح االكود لدى كالتالى : Private Sub Workbook_Open() MsgBox (" text of message") Sheets("name of the selected sheet to open at start").Activate End Sub وشكراً لجميع الأخوة ، المشرفين و الأعضاء ممن شاركوا بهذا الموضوع
  6. لم أستطع تنفيذ هذا الأمر مطلقاً ، و أصابنى إحباط شديد فقد وضعت الكود مرة فى الشاشة البيضاء التى تنفتح بعد الضغط مرتين على إسم ورقة العمل الموجود إلى اليسار تحت المجلد microsoft excel objrcts و قمت بتغيير رقم واحد فى الكود إلى إسم ورقة العمل و أغلقت محررر الفبجوال بيزيك و أغلقت كتاب العمل بعد حفظه و عندما فتحت وجدت الأمر لم يتغير ، و كررت نفس الخطوات السابقة و لكن مع وضع الكود فى this work book تحت نفس المجلد و كررت نفس الخطوات . و أيضاً لم يتغير الأمر !!!!!!!!!!!1
  7. السلام عليكم ورحمة الله وبركاته،، الأخوة الكرام : لدى كتاب عمل قمت بعمل مجموعة من ال Macros له - مستفيداً من الكنوز الثمينة الموجودة بالمنتدى هنا - ، و يمكن استعراضها جميعاً - و من ثم التعامل معها - ببساطة من : Tools Macros فتظهر القائمة ، و بإستخدام الأمر Run يتم تنفيذ أى Macro منها و نظراً لإن إثنان من هذه ال Macros خاصين بتفعيل / إزالة الحماية عن جميع الأوراق فى كتاب العمل (و عددها يفوق المائة) دفعة واحدة،فإنه بإمكان أى مستخدم إزالة الحماية و التعديل كما يشاء فى أوراق العمل دون أن يزعج نفسه بفك حماية الأوراق كل على حدة بالطريق التقليدى من : Tools Protection Unprotect Worksheet و أنا لا أريد أن يحدث ذلك - بطبيعة الحال- و إنما أريد أن يحتاج المستخدم إدخال كلمة السر حتى يستطيع التعامل مع هذه ال Macros حتى لا يستطيع إزالة الحماية إلا بمعرفته لكلمة السر فكيف يمكن عمل ذلك بارك الله فيكم ؟؟
  8. تماااااااااااااااااام أخى الكريم / فلسطينى هذا بالضبط ما فعلته و ضبطت معى 100% ، بارك الله فيك و جزاك خير الجزاء ..
  9. السلام عليكم ورحمة الله وبركاته،، الأخوة الكرام : الخلية : A1 يمكن أن يكون بها تاريخ أو تكون فارغة الخلية : A2 المطلوب وضع تاريخ بها (مع تطبيق قاعدة التحقق من الصحة "VALIDATION" بالشرطين التاليين معاً : لو كانت الخلية A1 = صفر (أى أنها فارغة) لا يسمح الإكسيل بإدخال أى قيمة فى الخلية A2، لأنه كما تعلمون أن الإكسيل يقوم بتحويل أى رقم - طالما أن FORMAT الخلية بصيغة DATE إلى تاريخ - فيحول مثلاً 1 إلى 1/1/1900 و 4 إلى 4/1/1900 و لا أريد لهذا أن يحدث طالما أن A1 فارغة . (أى أريده أن يعترض على إدخال أى قيمة أيا كانت سواء كانت تاريخ أو رقم أو أو حرف أو أى شئ آخر و لا يسمح بذلك على الإطلاق) لو كانت الخلية A2 بها تاريخ ، فالمسموح بإدخاله فى الخلية A2 هو تاريخ يساوى التاريخ الموجود بالخلية A1 أو أكبر منه ( أى أنه غير مسموح بإدخال تاريخ أقل من الموجود بالخلية A1 فى حال أن بها تاريخ). حاولت جاهدا فى هذا و لم أفلح على الإطلاق فهل أجد الحل لديكم . ؟؟؟ مشكورين والسلام عليكم ورحمة الله وبركاته
  10. بعد التحميل ................... و فى وقت طويل اتضح أن الملف هو Office XP و ليس 2006 و لا غيره :@
  11. بارك الله فيك أخى الكريم / فلسطينى . نفذت ما قلت و عادت الأمور كما كانت و لله الحمد . شكراً جزيلاً لك
  12. الأخوة الكرام : السلام عليكم و رحمة الله و بركاته حدثت مشكلة غريبة فى تطبيق الإكسيل عندى ، حيث تحولت أسماء الأعمدة إلى أرقام بدلاً من الحروف ، فكيف يمكننى إرجاعها إلى حروف مرة أخرى . جزاكم الله كل خير
  13. و الله أى كلمة شكر ستكون قليلة فى حقك أخى / love candle ، فقد فرجت عنى كربة من كرب الدنيا و يسرت لى أمراً و قضيت لى حاجة من حوائج الدنيا ، بارك الله فيك و فرج عنك كربة من كرب يوم القيامة و يسر لك كل أمورك . برحمته و فضله و رضوانه .
  14. أخى الكريم : love candle إليك آخر وضع توصلت إليه ، و قد أصابنى إرهاق ذهنى شديد بمعنى الكلمة حيث قمت بمراجعة دقيقة لكل ما يمكن أن يكون به خطأ و لم أصل لأى شئ !!!!!!!!!!!!!!!!! ، أتمنى أن أجد ليد الحل و المخرج من هذه المشكلة أخى الكريم لأننى أحتاج لهذا الملف ضمن منظومة خاصة بعملى فى وقت قريب لأننى سأقدم تقرير لرئيسى فى العمل بخصوصه .. بارك الله فيك أى الكريم و شكراً لك. الملف المرفق
  15. أخى الكريم : love candle مرفق لكم ملف به عرض المشكلة التى لم أستطع حلها ، حيث ما أريده الآن هو ملء الجدول الأخير ، بحسب الحى و نوع النشاط معاً. و كنت قد استطعت عمل قوائم منسدلة و بإستخدام الدالة index أن أقوم بملء الجدول الصغير عن طريق إرجاع المناطق الفرعية إلى الأحياء التى تتبعها ، و لكنى لم أستطع أن أقوم بعمل معادلة sumif و أدرج بها شرطين معاً أحدهما خاص بوجود حى معين و الآخر بوجود نشاط معين معاً . الملف المرفق و لك جزيل الشكر و التقدير بارك الله فيك
  16. الأخوة الكرام : كل عام و أنتم بخير بمناسبة شهر رمضان المبارك أعاده الله عليكم و على أمتنا الإسلامية بكل الخير لو فرضنا أن لدى البيانات التالية : 1 الزمالك 1 القاهرة 2 الشرق 2 بورسعيد 2 المناخ 3 الإسماعيلية 3 الشيخ زايد 4 السويس 4 الأربعين 5 المنصورة 3 الكاريه 1 الدقى 5 توريل 5 السكة الجديدة العمود الثانى هو لأسماء مناطق فرعية تتبع المدن المصرية الموجودة فى العمود الأخير ، حيث يشير الرقم التعريفى فى العمود الأول ، للمدينة التى يتبعها الحى بحسب كود الحى الموجود فى العمود الثالث . و بفرض أنه ستوجد قيم رقمية مناظرة لأسماء المناطق الفرعية .. فالمطلوب : هو كيف يمكن عمل دالة إكسيل تقوم بالتعرف على المدينة التى تتبعها المنطقة الفرعية و من ثم تقوم يتجميع كل القيم المناظرة للمناطق الفرعية التابعة لنفس المدينة و تضع الناتج فى عمود جديد بجانب إسم المدينة .... و هكذا و ذلك لأننى حاولت بإستخدام الدالة (IF) فوجدت أن هناك حد أقصى 8 متغيرات لما يمكن إدخاله على صورة (إذا كان إسم المنطقة الفرعية (كذا) إذن (الرقم) كذا ; و إلا إذا كان إسمها كذا ; إذن القم كذا) فهل هناك حل لهذه المشكلة ، و بحيث لا يلزمنى بإلتزام ترتيب معين فى كتابة بيانات عمود المناطق الفرعية ، حيث أنها تتغير بصفة دورية (أعنى ترتيب البيانات) و بحيث أتمكن من إضافة مناطق فرعية جديدة تابعة لنفس المدن أو لمدن جديدة فى أى وقت. فهل أجد لدى خبراء المنتدى حلاً لتلك المشكلة ..
  17. كله تمام ......... أخى / محمد الدالة ضبطت معى و اشتغلت 100% ، بارك الله فيك و أسعدك دنيا و آخرة بإذنه تعالى .
  18. لا شكر على واجب أخى الكريم و أنتم تستحقون كل خير ، و الله يوفقك . و شكراً على كلماتك الطيبة
  19. مازلت أحاول أخى / محمد فى تطبيق الدالة و شكراً جزيلاً لك
  20. شكرا أخى / حسام على كريم خلقك ، و لا داعى للإعتذار فقد بذلت ما بوسعك و أنا أشكرك. و بإنتظار أحد الأخوة الكرام ممن لهم دراية بالفيجوال بيزيك
  21. السلام عليكم ورحمة الله وبركاته،، الأخوة الكرام : هذه هى مساهمتى الثانية فى المنتدى - بأمل أن تحوز إعجابكم هذه المرة 🙂 - و هى عبارة عن برنامج لحساب أقساط القروض [/(الأصل و الفائدة و المجموع ) بطريقة الفائدة المتناقصة (المركبة) و البرنامج به ورقتى عمل : الأولى : على أساس سنوى و حتى عشر سنوات ، و يتم فيها حساب القسط الشهرى خلال كل سنة من سنوات عمر القرض (أصل و فائدة و مجموع ) مع بيان الإجماليات فى نهاية عمر القرض ، و يتم ملء بيانات الجدول آلياً بحسب مدة القرض التى تم إدخالها من قبل المستخدم. الثانية : على أساس شهرى ، و حتى 3 سنوات ، و هى مفيدة فى حلة القروض ذات العمر أقل من سنة ، و كذا فى حالات القروض ذات المدد (سنة + عدد كسر من الشهور "5 شهور ، 7 شهور " إلخ) و يتم فيها نفس ما يتم فى الورقة الأولى ، و هما يعطيان نتائج متطابقة . كل ما على المستخدم إدخاله : هو إسم طالب القرض ، و سعر الفائدة ، و مدة القرض(بالسنوات فى الورق الأولى ، و بالشهور فى الورقة الثانية) و كل ما أرجوه : هو خالص دعواتكم لى ، و ردودكم المشجعة و أنا حاضر لأى استفسار .... خالص تحياتى لكم برنامج حساب الفائدة المركبة.xls
  22. راجع هذا الرباط أيضا أخى الكريم http://www.officena.net/ib/index.php?act=A...pe=post&id=2306
  23. أخى الفاضل / حسام شكرا لك على الرد و الإهتمام و جزاك الله كل خير إن ما قمت به أخى الكريم قد قمت به أنا بالفعل - دون أن يقلل هذا من امتنانى لردك بالطبع - و لكنه يحتاج لأن أضع المعادلة فى السطر الأخير فى كل تاريخ فقط و ليس نسخها بصفة عامة ، ليقوم بجمع ما قبله ، و لكنى نظرا لأن عدد التواريخ عندى ضخم جدا ، فإن ما أريده هو وضع معادلة أو كود بحيث يتعرف البرنامج دون تدخل من المستخدم بأن التاريخ قد تغير فى السطر الجديد فيقوم بجمع جميع القيم المناظرة للتاريخ السابق ثم يتم تصفير هذا (العداد إن جاز التعبير) ليكون مستعداً لإجراء عملية جمع فرعى (subtotal) جديدة للقيم المناظرة للتاريخ الجديد ووضع هذا المجموع فى العمود الثالث أمام آخر سطر من هذا التاريخ الجديد و هكذا و لم أعرف كيف أقوم بإفهام الإكسيل بأن يقوم بهذا !!!!
  24. السلام عليكم ورحمة الله وبركاته،، لو لدى 3 أعمدة الأول يحوى تواريخ متكررة و متسلسلة بشكل تصاعدى (و ليس بالضرورة أن تكون متتالية) و العمود الثانى يحوى قيم رقمية أمام هذه التواريخ ، و أمام بعض التواريخ تكون القيمة صفر 2005/05/03 12 2005/05/03 98 2005/05/04 165 2005/05/04 16 2005/05/04 0 2005/05/04 66 2005/05/06 77 و هكذا ، و أنا أريد أن يظهر لى فى العمود الثالث فى نهاية كل تاريخ (أمام آخر تاريخ قبل أن يتغير) مجموع القيم الموجودة فى العمود الثانى من بداية التاريخ حتى نهايته ، و هكذا بحيث يظهر لى فى هذا العمود ال subtotals لجميع التواريخ الموجودة ( و التى إذا ما جمعتها فى النهاية يظهر لى نفس الإجمالى فى حالة قيامى بجمع جميع القيم الموجودة فى العمود الثانى . حيث حاولت هذا و لم أفلح !!!
×
×
  • اضف...

Important Information