> ## Content Index
> Fetch the complete content index at: https://nolongerset.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# 6 Techniques to Control Where Forms Open On-Screen in Access
- URL: https://nolongerset.com/controlling-where-forms-open/
- Published: 2022-03-24T03:07:29.000Z
- Updated: 2026-05-08T12:49:08.000Z
- Description: With Overlapping Windows in Access, you need to think about where each form should open on-screen for the user. Here are 6 techniques to help you do that.
- Author: Mike Wolfe
- Tags: Forms, #Import 2026-05-20 02:59

If you use [**Overlapping Windows**](https://nolongerset.com/windows-vs-tabs/)*(see screenshot below)* in your Access application, you need to think about where you want each form to appear when the user opens it. 

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2022/03/image-105.png)

To set the "Document Window Options" go to File > Options > Current Database.

Here are **six techniques** you can use to control where forms appear.

## Techniques Listed By Form Open Location

### Open in the Center of the Screen

Set the form's [AutoCenter property](https://docs.microsoft.com/en-us/office/vba/api/access.form.autocenter) to True:

- *Auto Center: *Yes**

### Open in the Upper-Left of the Screen

Use the **DoCmd.MoveSize method** to relocate the form to the top left corner of the canvas by setting the *Right* and *Down* argumentsto `0`.

```vba
DoCmd.MoveSize 0, 0
```

This line of code can be placed in one of several places:

- After the `DoCmd.OpenForm` line in the calling code
- In the `Form_Open` event handler
- In the `Form_Load` event handler

### Open to the Right of the Active Form

To display the newly opened form side-by-side with the active form, we can use the active form's *Width* and *Left* properties to calculate the *Right* and *Down* arguments of the **MoveSize** method:

```vba
Dim Right As Integer, Down As Integer
Right = Screen.ActiveForm.WindowLeft + Screen.ActiveForm.WindowWidth
Down = Screen.ActiveForm.WindowTop
DoCmd.OpenForm "MyForm"
DoCmd.MoveSize Right, Down
```

You can use variations of the following form window positioning properties ([*WindowLeft*](https://docs.microsoft.com/en-us/office/vba/api/access.form.windowleft), [*WindowWidth*](https://docs.microsoft.com/en-us/office/vba/api/access.form.windowwidth), [*WindowTop*](https://docs.microsoft.com/en-us/office/vba/api/access.form.windowtop), [*WindowHeight*](https://docs.microsoft.com/en-us/office/vba/api/access.form.windowheight)) to align any two windows relative to each other, but opening a child window to the immediate right of a parent window is the most common scenario in my experience.

### Open to an Arbitrary Size and Location

To control *exactly* where and how big a form is when it opens on-screen, you can position the form and save it in Design View. 

Here are the key steps:

1. Verify the following form properties:  
*Popup: *No**  
*Auto Center: *No**  
*Auto Resize: *No**  
*Fit to Screen: *No**
2. Open the form in Design View
3. Size and place the form where you want it (relative to the top left corner of the screen)
4. Save and close the form

The next time the form is opened, it will open to the same size and location as where you saved it, assuming there is enough space on the Access canvas.

### Open to the Last Used Location

Here's the basic idea:

1. In the `Form_Unload` event, save the form's Top, Left, Height, and Width in the user registry via the [SaveSetting statement](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/savesetting-statement)
2. In the `Form_Load` event, load the form's Top, Left, Height, and Width settings from the user registry via the [GetSetting function](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/getsetting-function)
3. Call `DoCmd.MoveSize` with the retrieved positions

This is something that could easily be generalized across an entire application. 

### "Dock" Forms 

You can use my [FillAccessWindow() function](https://nolongerset.com/fun-with-form-windows/) to position forms as a percentage of the Access canvas.

The screenshot below was created with three lines of code:

```vba
'Create a sidebar with stacked forms in the remaining space
DoCmd.OpenForm "Form1":FillAccessWindow , ,"NW", 1, .4
DoCmd.OpenForm "Form2":FillAccessWindow , ,"NE", .5, .6
DoCmd.OpenForm "Form3":FillAccessWindow , ,"SE", .5, .6
```

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2022/03/image-106.png)

## Pitfalls and Caveats

### The Access "Canvas"

I mentioned the Access "canvas" several times in the above techniques. The canvas is the main area of the Access window where forms and reports are displayed. When you maximize a form or report it fills the Access canvas. 

Here's a helpful visual:

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2022/03/image-107.png)

The area highlighted in green is what's known as the Access "canvas."

### Popup Windows

With all of the techniques above, forms position themselves when they open **relative** to the Access *canvas*. However, for popup windows, those positions are relative to the Windows desktop.

> **Popup forms are positioned relative to the Windows desktop.**

There are two primary ways to open a form in popup mode:

- Set the form's *Pop Up* property to **Yes** in design view
- Pass *acDialog* to the *WindowMode* parameter of the [**DoCmd.OpenForm** method](https://docs.microsoft.com/en-us/office/vba/api/access.docmd.openform)

### Don't Assume Access is Running Full-Screen

When I'm developing, I tend to leave the Access application maximized to occupy the full screen. 

It's convenient for me as a developer, but what if a user doesn't want to work that way? What if they have their main Access window restored to a quarter of the available screen real estate? If you've created a bunch of prepositioned forms while Access is maximized, those forms may get resized or lost off screen when opened on a user's smaller Access canvas.

One way to deal with this is to use my [KeepFormOnCanvas() method](https://nolongerset.com/get-back-here-form/).

### Don't Assume Your Screen Resolution is Typical

Even if you tell your users they must run Access full screen, their full screen may not be the same as your full-screen. This is especially true with the proliferation of high-DPI displays.

To account for this, I do my best to learn the smallest resolution among my users. I then use an [AutoHotKey script](https://nolongerset.com/size-matters/) I wrote to resize my own Access application to fit into one of a number of pre-configured screen resolutions.

---

### Referenced articles

[Overlapping Windows vs. Tabbed DocumentsAccess gives you two options for displaying forms and report objects: windows or tabs. Read on for the advantages of each and which one I prefer.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://nolongerset.com/content/images/2022/03/Windows-vs-Tabs.jpg)](https://nolongerset.com/windows-vs-tabs/)

[Fun with Form WindowsUsing my FillAccessWindow function to resize Form and Report objects relative to the amount of available space on the Access canvas.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://nolongerset.com/content/images/2020/11/building-1245984_1920.jpg)](https://nolongerset.com/fun-with-form-windows/)

[Get Back Here, Form!What happens if the user resizes their Access window so that our form can’t open in its entirety? KeepFormOnCanvas() to the rescue!![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://nolongerset.com/content/images/2020/11/rodeo-500570_1920.jpg)](https://nolongerset.com/get-back-here-form/)

[Size MattersTesting your program for small screens? You could change your own monitor’s resolution, but that gets annoying real fast. Here’s a better way.![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://nolongerset.com/content/images/2020/11/fruit-1160552_1920.jpg)](https://nolongerset.com/size-matters/)

### External references

[Form.AutoCenter property (Access)Office VBA reference topicMicrosoft Docso365devx![](https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png)](https://docs.microsoft.com/en-us/office/vba/api/access.form.autocenter)

[DoCmd.MoveSize method (Access)Office VBA reference topicMicrosoft Docso365devx![](https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png)](https://docs.microsoft.com/en-us/office/vba/api/access.docmd.movesize)

[SaveSetting statement (VBA)Office VBA reference topicMicrosoft Docso365devx![](https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png)](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/savesetting-statement)

[GetSetting function (Visual Basic for Applications)Office VBA reference topicMicrosoft Docso365devx![](https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png)](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/getsetting-function)

[DoCmd.OpenForm method (Access)Office VBA reference topicMicrosoft Docso365devx![](https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png)](https://docs.microsoft.com/en-us/office/vba/api/access.docmd.openform)

*Image by* [*Paul McGowan*](https://pixabay.com/users/psaudio-834929/?utm%5Fsource=link-attribution&utm%5Fmedium=referral&utm%5Fcampaign=image&utm%5Fcontent=669296) *from* [*Pixabay*](https://pixabay.com/?utm%5Fsource=link-attribution&utm%5Fmedium=referral&utm%5Fcampaign=image&utm%5Fcontent=669296)