اگر استیون یک ورک بوک باز و حداکثر داشته باشد، و سپس یک یا چند ورک بوک اضافی را باز کند، کتاب های کار اضافی حداکثر به نظر می رسند اما واقعاً نیستند. سمت چپ، پایین و سمت راست این کتاب های کار اضافی در لبه های صفحه قرار دارند، اما قسمت های بالایی به سمت پایین آبشاری می کنند، مانند کارت های شاخص که از یکدیگر فاصله دارند. برای استیو، بسیار بهتر است که کتاب های کار اضافی یا به عنوان بخش کوچک تری از پنجره باز شوند یا به طور کامل به حداکثر برسند تا بتواند پنجره ها را به اندازه کوچک تر «بازیابی» کند. او تعجب می کند که آیا تنظیمی وجود دارد که اندازه پنجره را برای این کتاب های کاری اضافی هنگام باز شدن کنترل کند.
شما به راحتی می توانید با استفاده از ماکروها بر روی اتفاقات پنجره کار تأثیر بگذارید. مکان عادی برای انجام این کار در ماکرو Workbook_Open است که یک کنترل کننده رویداد در شی ThisWorkbook است. در اینجا یک نسخه بسیار ساده وجود دارد که به سادگی از حداکثر شدن پنجره اطمینان حاصل می کند:
Public Sub WorkBook_Open()
Application.WindowState = xlMaximized
End Sub
سپس، در صورت تمایل، می توانید اندازه پنجره حداکثر شده را به صورت دستی تنظیم کنید.
البته، شما همچنین می توانید ماکرو را "بسازید" به طوری که پنجره را به روش های دیگری دستکاری کند. به عنوان مثال، ماکروی زیر ماکرو است که حداکثر اندازه صفحه نمایش مانیتوری را که ورک بوک روی آن باز می شود، تعیین می کند و سپس اندازه پنجره را طوری تنظیم می کند که 72 درصد از عرض صفحه و 96 درصد از ارتفاع صفحه را اشغال کند.
Public Sub WorkBook_Open()
Dim iMaxWidth As Integer Screen width (pixels)
Dim iMaxHeight As Integer Screen height (pixels)
Dim sngStartX As Single Upper-left corner of desired window
Dim sngStartY As Single Upper-left corner of desired window
Dim sngWidth As Single Width of desired window
Dim sngHeight As Single Height of desired window
Specifications for final window size
sngStartX = 0.14 Fraction of screen width from left edge
sngStartY = 0.02 Fraction of screen height from top
sngWidth = 0.72 Fraction of screen width desired
sngHeight = 0.96 Fraction of screen height desired
With Application
Maximize screen in order to grab maximum width and height
.WindowState = xlMaximized
iMaxWidth = .Width
iMaxHeight = .Height
.WindowState = xlNormal
Set final window position and size
.Top = iMaxHeight * sngStartY
.Left = iMaxWidth * sngStartX
.Width = sngWidth * iMaxWidth
.Height = sngHeight * iMaxHeight
End With
End Sub
البته می توانید تنظیمات را در دو متغیر (sngWidth و sngHeight) تنظیم کنید تا اندازه صفحه نمایش نهایی متفاوتی را انتخاب کنید. همچنین می توانید تنظیمات را در متغیرهای sngStartX و sngStartY تنظیم کنید تا موقعیت گوشه سمت چپ بالای پنجره نهایی را مشخص کنید.