ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
29 visibility
موضوع: آفیس توسط:
توماس یک ماکرو دارد که عملکردهای مختلفی را در فواصل زمانی مشخص انجام می دهد. اگر کادر محاوره‌ای روی صفحه باز باشد، برخی از آن عملکردها نباید انجام شوند، زیرا تلاش برای انجام آنها باعث ایجاد خطا در عملکردها می‌شود. او متعجب است که آیا راهی وجود دارد، در ماکرو، تا تشخیص دهد که آیا یک جعبه محاوره ای - هر جعبه محاوره ای - در حال حاضر باز است یا خیر. توماس ترجیح می‌دهد کادر محاوره‌ای باز را تشخیص دهد تا اینکه با خطای ایجاد شده مقابله کند.
شاید تنها راه برای انجام این کار استفاده از FindWindow باشد که در واقع بخشی از API ویندوز است. هدف آن بازیابی یک دسته در یک پنجره باز خاص است. (یک کادر محاوره ای چیزی جز یک پنجره باز نیست و هر کادر محاوره ای یک نام دارد.) این رویکرد به شما نمی گوید که آیا
any
کادر محاوره ای باز است، اما به شما می گوید که آیا a
specific
کادر محاوره ای باز است
در اینجا یک مثال سریع برای نشان دادن نحوه استفاده از تابع FindWindow آورده شده است:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal wClassName As Any, ByVal wWindowName As String) As Long Sub testDialogOpen() Dim wHandle As Long Dim wName As String wName = "Find and Replace" wHandle = FindWindow(0&, wName) If wHandle = 0 Then MsgBox "Dialog window is not open" Else MsgBox "Dialog window is open" End If End Sub
توجه داشته باشید که تابع FindWindow باید خارج از روال VBA شما اعلان شود. سپس، در داخل رویه، باید نام کادر محاوره‌ای را که می‌خواهید درباره آن اطلاعات کسب کنید، مشخص کنید. این نامی است که در نوار عنوان کادر محاوره ای ظاهر می شود و تابع FindWindow به حروف بزرگ و کوچک حساس نیست. مقدار بازگشتی برای FindWindow اگر باز باشد، یک دسته برای کادر محاوره ای خواهد بود. اگر باز نباشد، تابع 0 را برمی گرداند.
همچنین به یاد داشته باشید که جعبه های محاوره ای می توانند دو نوع باشند: مودال و غیر مودال. اگر یک کادر محاوره‌ای خاص مودال باشد، باید قبل از انجام هر گونه اقدام دیگری در سیستم، آن را رد کرد. می‌خواهید آزمایش‌های گسترده‌ای را با جعبه‌های محاوره‌ای انجام دهید، زیرا ممکن است بسته به اینکه یک کادر محاوره‌ای باز مودال باشد یا نه، عملکرد متفاوتی از ماکرو خود دریافت کنید.
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

614 دیدگاه

11.1k کاربر

107 نفر آنلاین
0 عضو و 107 مهمان در سایت حاضرند
بازدید امروز: 9242
بازدید دیروز: 14089
بازدید کل: 20228286
...