Don تمایل دارد روی دو نمایشگر کار کند و چندین کتاب کار در یک نمونه اکسل باز باشد. او همچنین پنجره های خود را به حداکثر می رساند. (او خود را بهعنوان مردی توصیف میکند که «همه چیز را در یک عکس ببینید».) اخیراً، وقتی دان کاری انجام داده است که یک کادر محاورهای مدال را باز میکند، کادر پشت کتاب کار باز میشود، که او را از دیدن کادر گفتگو یا تعامل با او باز میدارد. آی تی. او فکر می کند که آیا راهی وجود دارد که بتواند کادرهای محاوره ای مدال را در جلوی کتاب کار نشان دهد.
قبل از پاسخ باید به این نکته اشاره کرد که دیالوگ باکس ها می توانند بر دو نوع مدال و بدون حالت باشند. یک کادر محاوره ای بدون حالت، جعبه ای است که عملاً مستقل از برنامه ای است که به آن تعلق دارد. یک مثال خوب از چنین جعبه محاوره ای، کادر محاوره ای Find and Replace است. از طرف دیگر، قبل از ادامه کار با برنامه ای که کادر محاوره ای به آن تعلق دارد، باید به یک کادر محاوره ای مدال (آنهایی که دان با آنها مشکل دارد) پاسخ داده یا بسته شود.
مشخص نیست که آیا مشکل Dons مربوط به جعبههای محاورهای مدال است که توسط خود اکسل تولید میشوند یا اینکه آنها جعبههای محاورهای هستند که توسط ماکروهایی تولید میشوند که Don روی آنها کنترل دارد. اگر اولی باشد، خیلی کم می توان انجام داد. مکان لایه ای کادر محاوره ای به طور کامل توسط برنامه (و برنامه نویسانی که آن را ایجاد کرده اند) کنترل می شود. به عبارت دیگر، تغییر کد لازم است تا کادر محاورهای بهجای زیر آن، بهصورت لایه لایه در بالای کتاب کار ظاهر شود.
درک کنید که سناریویی وجود دارد که ممکن است مشکل به دلیل مشکل برنامه نویسی اکسل نباشد. ممکن است شما یک برنامه شخص ثالث در حال اجرا در سیستم داشته باشید که بر لایه بندی کادرهای محاوره ای و پنجره های مادر آنها تأثیر می گذارد. مقصران معمولی در این سناریو، ابزارهای مقیم حافظه هستند که خود را مجبور می کنند همیشه در بالای هر چیزی که روی صفحه است ظاهر شوند. تنها راه برای تشخیص اینکه آیا این مقصر است یا نه، غیرفعال کردن بارگیری چنین ابزارهای کمکی و نمایش یک کادر محاوره ای مدال در اکسل است. اگر رفتار به حالت عادی برگردد، منشأ مشکل را میدانید.
با این حال، اگر اینطور باشد که کادر محاوره ای توسط یک ماکرو Don ایجاد شده باشد، راه حل این است که کدی را تنظیم کنید که کادر محاوره ای مدال را تولید می کند. (در ماکروهای اکسل این نوع کادرهای محاوره ای معمولاً از طریق فرم های کاربری پیاده سازی می شوند.).
مشکل قرار دادن فرم کاربر در سناریوهای چندگانه صفحه با قرار دادن دستی فرم کاربر در کد آغازین آن برطرف می شود. به عنوان مثال، می توانید از تغییراتی در این مورد استفاده کنید:
Load UserForm1
UserForm1.StartUpPosition = 0
UserForm1.Top = Application.Top + 25
UserForm1.Left = Application.Left + 25
UserForm1.Show
ممکن است لازم باشد مکان را آزمایش کنید، اما تنظیم ویژگی StartUpPosition روی 0 مورد نیاز است تا VBA بداند که می خواهید به صورت دستی فرم کاربر را مکان یابی کنید.