هنگامی که یک UserForm ایجاد می کند، لوئیس ویژگی Top UserForm را روی 222 تنظیم می کند که با آزمون و خطا تعیین می کند فاصله پیکسل بین مرز بالایی پنجره فعال و بالای ردیف اول داده ها در کاربرگ است. او نمیپرسد آیا راهی برای محاسبه این فاصله بهصورت برنامهای وجود دارد، با توجه به اینکه فاصله میتواند بسته به مقدار نوار نمایش داده شده و ارتفاع نوار فرمول متفاوت باشد.
اگر باید ارتفاع ناحیه نوار را بدست آورید، می توانید ویژگی Height شی CommandBars ("Ribbon") را به این ترتیب بررسی کنید:
iHt = CommandBars("Ribbon").Height
البته این تنها بخشی از اطلاعاتی است که در نهایت به آن نیاز دارید. اطلاعات موقعیت یابی یک UserForm بر اساس گوشه سمت چپ بالای پنجره برنامه است. بنابراین، باید ضخامت حاشیه پنجره (در صورت وجود حاشیه)، ارتفاع نوار (که در بالا ذکر شد، اما فقط در صورتی که در نسخهای از Excel اجرا میشود که از نوار استفاده میکند)، ارتفاع نوار فرمول را در نظر بگیرید. ، هر فضای مجاز برای خط کش و غیره.
بسیاری از این موارد ویژگیهای Height را ندارند که بتوانید آن را بررسی کنید، بنابراین قرار دادن یک UserForm میتواند یک فرآیند آزمون و خطا باشد. هنگامی که UserForm را به درستی بر روی سیستم خود قرار دادید، هیچ تضمینی وجود ندارد که اگر در سیستم شخص دیگری نمایش داده شود، به درستی قرار گیرد.
بهترین راه حلی که پیدا کردیم این است که (در این مورد) چرخ را دوباره اختراع نکنیم. چیپ پیرسون، در وب سایت خود، چیزی را ایجاد کرده است که او آن را "موقعیت ساز فرم" می نامد که حدس و گمان را از موقعیت یابی یک UserForm حذف می کند. در اینجا می توانید اطلاعاتی در مورد آن پیدا کنید:
http://www.cpearson.com/Excel/FormPosition.htm
هیچ هزینه ای وجود ندارد؛ رایگان است. این به شما امکان می دهد یک UserForm را نسبت به هر سلول روی صفحه قرار دهید. اگر ماکروهایی را توسعه می دهید که به UserForms متکی هستند، باید بررسی کنید که چیپ چه چیزی را ارائه می دهد.