سؤال

وأريد أن اتخاذ إجراء في ماكرو مصنف Excel بعد فترة من الخمول (إخفاء / حماية بعض أوراق العمل). ما هو أفضل / أبسط طريقة لتحقيق ذلك؟

ووأنا على افتراض سوف تستخدم Application.OnTime للتحقق بشكل دوري إذا كان مستخدم نشط. ولكن ما هي الأحداث التي يجب أن تعامل لمعرفة ما إذا كان المستخدم "النشط" (أي لديها يفعل شيئا - أي شيء - مع المصنف)؟

وتوضيح: أريد أن كشف <م> جميع النشاط، لا يغير فقط. بمعنى آخر. بما في ذلك نقرات الماوس، واختيار والنسخ والتنقل باستخدام لوحة المفاتيح، وأوراق العمل المتغيرة، ...

وأفترض أنه عندما يحدث حدث UI التي تمثل نشاط المستخدم، وسوف تعيين متغير على النحو التالي:

LastActivityTime = Now

ووسوف المدى الكلي من خلال Application.OnTime تحقق هذا المتغير لمعرفة ما إذا كان المستخدم النشط مؤخرا. أن الأحداث التي (غير SheetChange) ولست بحاجة للتعامل مع وضع هذا المتغير؟ كنت قد النوع من يأمل في ان هناك KeyUp والأحداث MouseUp، هذين ربما كانت كافية.

تحديث: لقد نفذت ذلك عن طريق التعامل مع Workbook_SheetActivate، Workbook_SheetSelectionChange وWorkbook_WindowActivate. واقعية وربما هذا هو ما يكفي.

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

المحلول

ولقد نفذت ذلك عن طريق التعامل مع Workbook_SheetActivate، Workbook_SheetSelectionChange وWorkbook_WindowActivate. واقعية وربما هذا هو ما يكفي.

نصائح أخرى

وأستطيع أن أرى فقط حلين - إما التعامل مع evary حدث واحد كائن التطبيق له أو استخدام <لأ href = "http://msdn.microsoft.com/en-us/library/ms646302.aspx" يختلط = " نوفولو noreferrer "> GetLastInputInfo وظيفة.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top