Vba 我在access中打开表单时遇到问题,无法使其达到最大屏幕大小

Vba 我在access中打开表单时遇到问题,无法使其达到最大屏幕大小,vba,ms-access,Vba,Ms Access,我有一个访问数据库,有3个用户。我已经在我的工作站上创建了所有代码,每个用户都在他们的工作站上打开了一个不同的前端(代码保存在中央服务器上) 当我在他们的工作站上打开Access时,我在代码中尝试了几种不同的方法来打开默认窗体。我在doCmd.max中使用了form_load和form_open过程 问题是:当我打开工作站上的任何一个前端时,表单会最大化,因此我怀疑这不是代码问题。当我在工作站上打开Access时,默认窗体只打开到我创建的大小,例如5“x 5”。但是,如果我随后将表单置于“设计”

我有一个访问数据库,有3个用户。我已经在我的工作站上创建了所有代码,每个用户都在他们的工作站上打开了一个不同的前端(代码保存在中央服务器上)

当我在他们的工作站上打开Access时,我在代码中尝试了几种不同的方法来打开默认窗体。我在doCmd.max中使用了form_load和form_open过程

问题是:当我打开工作站上的任何一个前端时,表单会最大化,因此我怀疑这不是代码问题。当我在工作站上打开Access时,默认窗体只打开到我创建的大小,例如5“x 5”。但是,如果我随后将表单置于“设计”模式,然后再置于“表单”模式,则表单将占据整个屏幕,即它们会最大化。只有在工作站上启动访问并加载默认表单时,才会出现问题


有人能告诉我某个地方的设置或VBA代码变体,它将在加载表单时最大化表单吗?所有3个工作站都在运行Windows 10。

您需要最大化访问窗口本身,而不仅仅是表单。 将此复制到某些脉冲模块:

”放在模块顶部:
将函数GetActiveWindow库“user32”()声明为
将函数GetParent Lib“user32”(ByVal hWnd As Long)声明为Long
将函数ShowWindow库“user32”(ByVal hWnd为Long,ByVal nCmdShow为Long)声明为布尔值
全局常数SW_最大化=3
'获取Access应用程序窗口句柄的函数:
函数GetAccesshWnd()
Dim hWnd尽可能长,hWndAccess尽可能长
'获取当前活动窗口的句柄。
hWnd=GetActiveWindow()
hWndAccess=hWnd
'查找没有父窗口的顶部窗口。
而hWnd为0
hWndAccess=hWnd
hWnd=GetParent(hWnd)
温德
GetAccesshWnd=hWndAccess
端函数
在form_load事件中:

ShowWindow GetAccesshWnd(),SW\u

即使我通常也会避免使用
DoCmd
,最大化访问应用程序窗口也是一个简单的过程,包括:

Apllication.DoCmd.RunCommand acCmdAppMaximize 'Maximize the MS Access Application
或使用ShowWindow(x86和x64)和Application.hWndAccessApp:

#如果是VBA7,则
私有声明PtrSafe函数ShowWindow Lib“user32”别名“ShowWindow”(ByVal hwnd为LongPtr,ByVal nCmdShow为Long)为Long
#否则
私有声明函数ShowWindow Lib“user32”(ByVal hwnd为Long,ByVal nCmdShow为Long)为Long
#如果结束
专用常数SW_最大化=3
Public Sub-maximizeeAccessApp(可选ByRef应用程序作为Access.Application)
如果应用程序什么都不是,那么
设置应用程序=应用程序
如果结束
ShowWindow app.hWndAccessApp,软件
端接头
这可以在没有参数的情况下用于当前访问应用程序,也可以传递另一个访问实例以最大化其窗口

Private子testmaximizeeAccessApp()
Dim应用程序作为对象
Set app=CreateObject(“Access.Application”)
app.OpenCurrentDatabase(“path/to/db”)
MaximizeeAccessApp应用程序
端接头

您可以尝试表单的激活事件,但在我看来,要求用户的全屏状态(当然平板电脑除外)有点粗鲁。谢谢,我将在今晚编写代码并在早上测试它。我尝试了代码,但它停止了,因为我还没有声明函数GetActiveWindow或GetParent,很抱歉,我不知道正确的声明应该是什么。顺便说一下,我正在使用Access2016@Les对不起,我忘了另外两个声明。更新了帖子。除非必要,否则不要使用整数(WinApi调用),请使用long。句柄不适合整数。不要将增量快捷方式用作
%
(简称
为整数)。用于api声明,请注意
Application.hWndAccessApp
@viilpe抱歉,它不起作用。默认窗体仍按其设计尺寸显示,即5“x5”。在它背后,访问确实占据了整个屏幕。显然,我不希望用户点击它,因为它超出了表单的边界。也许,相反,我可以最小化访问,使其小于表单的大小。这可能吗?对不起,和以前一样。也许我对表单的设置做了一些我不知道的事情。访问权限最大化,但表单没有。我将尝试使用db中的另一个表单作为默认显示表单,然后看看会发生什么。启动时是否执行了其他代码?您可以使用
Form\u Resize
event查看是否将其还原
Debug.Print“大小调整为:“&Me.WindowWidth&”“&Me.WindowHeight
我在Form\u加载过程中使用的唯一代码是Me.move-10、-10和docmd.maximize。这就是我在其他表格中使用的全部内容。我过去曾遇到过表格腐败的问题。我已从另一个db复制了默认显示窗体,删除了所有控件,并将控件从给我带来悲伤的窗体复制到正常工作的窗体上。现在一切正常。我不知道为什么表格一天起作用,第二天就腐败了。这已经很久没有发生了,但唯一的解决办法是从一个新的形式开始。谢谢你帮我调查这件事。前端的腐败不应该成为每周的话题。如果是你做错了什么。用于获取已修复的数据库。现在评估一下腐败的原因。如果我没记错(上次数据库损坏是3年前),那可能是由于共享前端(每个用户都应该有自己的副本)造成的,请看