سؤال

أنا أعمل على تطبيق ماكرو Word VBA لـ 80 مستخدمًا أو نحو ذلك.يعاني المكتب من معدل دوران مرتفع للموظفين، وبالتالي فإن التدريب يعاني، وبالتالي فإن أحد المتطلبات التي فرضتها ذاتيًا لهذا المشروع هو التوثيق الشامل والودي.ومع ذلك، لتكملة ذلك، ولتوفير الاضطرار للمبتدئين إلى فتح مستند مكون من 100 صفحة عندما يريدون تجربة شيء جديد، أريد شريط حالة في كل نموذج مستخدم (هناك خمسة) يوفر مساعدة سياقية.أجد تلميحات الأدوات مزعجة.

ليس لدي الكثير من الخبرة، لذلك كنت أرغب في ذلك

في الأساس، لدي ملف يحتوي على كل سلسلة الحالة.(هذا ملف نصي حاليًا، لكنني كنت أتساءل عما إذا كان يجب علي استخدام جدول بيانات أو ملف CSV لتسهيل التحرير بواسطة الموظفين الآخرين في المستقبل.) يحتوي كل عنصر تحكم على حدث MouseMove الذي يشير إلى وظيفة:getStatus(cID) الذي يفتح الملف ويلتقط السطر ويعرضه في تسمية الحالة.كما أنه يلتقط بعض المعلمات من نفس السطر في الملف، مثل ما إذا كانت التسمية قابلة للنقر (للربط بصفحة في ملف المساعدة)، وما هو اللون الذي يجب أن تكون عليه التسمية.

لذلك بعض الأسئلة حقا:

هل سيكون التطبيق بطيئًا إذا كان نموذج المستخدم يشير باستمرار إلى ملف؟يبدو الأمر جيدًا بالنسبة لي، لكنني أمضيت وقتًا طويلاً في هذا الأمر، وأنا المستخدم الوحيد الذي يصل إلى هذا الملف.سيكون هناك 80 شخصًا يصلون إليه باستمرار.

هل MouseMove هو التحكم بأفضل طريقة؟هل يجب علي بدلاً من ذلك استخدام الإحداثيات؟

الأهم من ذلك (فيما يتعلق باضطراري إلى القيام بأقل قدر ممكن من العمل) هل هناك طريقة ما للقيام بذلك حتى لا أضطر إلى إجراء حدث MouseMove في كل عنصر تحكم على حدة؟لدي بضع مئات أو نحو ذلك من عناصر التحكم، كل منها له معرفه الخاص (حسنًا، ليس بعد، لكنهم سيفعلون ذلك إذا كانت هذه هي الطريقة الوحيدة للقيام بذلك).ربما عندما يتم تحميل النموذج، يمكنني تحميل جميع أسطر الحالة الممكنة بحيث تكون جاهزة عندما يتم تمرير عنصر التحكم بالماوس.ولكن بعد ذلك، ربما يكون وقت التحميل لا يكاد يذكر؟

نقدر أي أفكار أو أفكار - خاصة إذا كان لدى VBA بالفعل مجموعة كاملة من الوظائف للقيام بذلك بالفعل وأنا أحاول فقط إعادة اختراع العجلة.لا يمكنني استخدام شريط حالة التطبيق، لأن المستخدم نادرًا ما يرى التطبيق نفسه.

شكرًا!

يحرر:

إنه مخصص لإدخال البيانات والنقر وإنشاء المستندات قليلاً.

إنها بيئة خاضعة للرقابة، لذا فإن مشكلات أمان الماكرو لا تشكل مصدر قلق كبير بالنسبة لي - وإذا حدث خطأ ما، فهو خطأ أو مشكلة شخص آخر :)

هل كانت مفيدة؟

المحلول

هل هذا هو تطبيق إدخال البيانات أم أنهم ينقرون فقط على الأشياء؟نظرًا لأن الحقل الذي يتم التركيز عليه غالبًا ما يكون مختلفًا عن العنصر الذي يحوم الماوس فوقه، فقد يتسبب ذلك في حدوث الكثير من الارتباك.

تعد القراءة باستمرار من ملف مضيعة كبيرة للوقت والموارد - ومن الأفضل تحميلها مرة واحدة فقط في مصفوفة أو مجموعة عند تحميل النموذج.

يعد حدث On MouseMouse أفضل من الإحداثيات لأنه يمكنك تحريك الأشياء دون قلق.إنه عدد كبير من التعليمات البرمجية ولكن يجب أن تكون قادرًا على إنشاء معظمها إذا كان لديك قائمة بأسماء عناصر التحكم لأن الكود يجب أن يكون متطابقًا.

أي

Sub Control_MouseMove()
  DisplayStatus(Control)
End sub

نصائح أخرى

أود أن أعتبر خاصية StatusText وخاصية ControlTipText لعناصر التحكم لهذا النوع من المساعدة.

نص الحالة يقوم هذا المثال بتعيين نص تعليمات شريط المعلومات لحقل النموذج المسمى "العمر".

With ActiveDocument.FormFields("Age")
    .OwnStatus = True
    .StatusText = "Type your current age."
End With

ControlTipTextيمكن تعيين ذلك من صفحة الخصائص لعنصر التحكم.

Private Sub UserForm_Initialize()
    MultiPage1.Page1.ControlTipText = "Here in page 1"
    MultiPage1.Page2.ControlTipText = "Now in page 2"

    CommandButton1.ControlTipText = "And now here's"
    CommandButton2.ControlTipText = "a tip from"
    CommandButton3.ControlTipText = "your controls!"
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top