字太小终于有救了:Access 窗体和报表支持 1000% 放大


摘要: Microsoft Access 最新版本大幅扩展了缩放功能,现在支持 10% 到 1000% 的缩放范围,并且报表视图、弹出窗体、连续窗体全部可以缩放了。这篇文章告诉你怎么用、怎么写 VBA 代码控制缩放,以及这个功能到底能解决什么实际问题。access开发|access培训|access框架|请添加edonsoft。

6.png

Hi,大家好!

Access老早之前更新了一个放大的功能,再经过几个BUG修正之后,功能也正常了,高分屏放大了也不会像之前那么恶心了,但这个功能有什么好讲的么?手工操作当然没有啥,但要给大家讲一下这个功能用VBA怎么写!

试了一下,窗体、报表、表、查询,全都能缩放了。而且缩放范围从原来的 50% - 500%,直接扩展到了 10% - 1000%

能缩放什么?

先说说这次更新到底支持哪些对象:

1. 窗体(Form)

  • 单记录窗体:放大看细节,缩小看整体布局

  • 连续窗体:整个记录列表一起缩放,密密麻麻的数据可以缩小看全局

  • 弹出窗体:终于可以缩放了,不用再为看不清小字发愁

  • 嵌套窗体:子窗体跟着父窗体一起缩放,不会出现比例错位

2. 报表(Report)

以前报表只能在打印预览里调整显示比例,现在报表视图(Report View)也能缩放了。

这意味着你可以:

  • 放大检查报表里的具体数值

  • 缩小查看整个报表的布局和数据分布

  • 报表嵌在窗体里时,跟着窗体一起缩放

3. 表和查询

数据表视图本来就支持缩放,现在范围更广了。数据密集的时候缩小看,看具体内容的时候放大,非常方便。

怎么缩放?

微软给了 5 种方式,你可以按自己的习惯选:

方法 1:功能区菜单

点击功能区的 "视图" 选项卡,找到 "缩放" 菜单,里面有:

  • 10%

  • 25%

  • 50%

  • 75%

  • 100%

  • 150%

  • 200%

  • 500%

  • 1000%

  • 适合窗口

方法 2:状态栏滑块

窗口右下角的状态栏有个滑块,直接拖动就能缩放。

这是最直观的方式,适合需要微调的情况。

方法 3:Ctrl + 鼠标滚轮

按住 Ctrl 键,滚动鼠标滚轮:

  • 向上滚:放大

  • 向下滚:缩小

这是最快的方式,适合频繁调整缩放比例。

方法 4:键盘快捷键

  • Ctrl + Alt + +(加号):放大

  • Ctrl + Alt + -(减号):缩小

  • Ctrl + Alt + 0(数字零):重置为 100%

方法 5:VBA 代码

如果你想在代码里控制缩放,可以用 DoCmd.RunCommand

' 放大到 200%
DoCmd.RunCommand acCmdZoom200

'
 缩小到 50%
DoCmd.RunCommand acCmdZoom50

' 重置为 100%
DoCmd.RunCommand acCmdZoom100

'
 适合窗口
DoCmd.RunCommand acCmdFitToWindow

完整的缩放命令常量包括:

acCmdZoom10      ' 10%
acCmdZoom25      '
 25%
acCmdZoom50      ' 50%
acCmdZoom75      '
 75%
acCmdZoom100     ' 100%
acCmdZoom150     '
 150%
acCmdZoom200     ' 200%
acCmdZoom1000    '
 1000% (新增)
acCmdFitToWindow ' 适合窗口

实战代码:给窗体加缩放按钮

如果你想在自己的窗体上加几个缩放按钮,代码非常简单:

Option Compare Database
Option Explicit

' 放大到 150%
Private Sub btnZoom150_Click()
    On Error Resume Next
    DoCmd.RunCommand acCmdZoom150
    If Err.Number <> 0 Then
        MsgBox "当前视图不支持缩放", vbInformation
    End If
End Sub

'
 缩小到 75%
Private Sub btnZoom75_Click()
    On Error Resume Next
    DoCmd.RunCommand acCmdZoom75
End Sub

' 重置为 100%
Private Sub btnZoomReset_Click()
    On Error Resume Next
    DoCmd.RunCommand acCmdZoom100
End Sub

'
 适合窗口
Private Sub btnZoomFit_Click()
    On Error Resume Next
    DoCmd.RunCommand acCmdFitToWindow
End Sub

进阶:用组合框动态选择缩放比例

如果你想做一个更灵活的缩放控制,可以加一个组合框:

' 窗体加载时初始化组合框
Private Sub Form_Load()
    With Me.cboZoom
        .RowSourceType = "Value List"
        .RowSource = "10%;25%;50%;75%;100%;150%;200%;500%;1000%;适合窗口"
        .Value = "100%"
    End With
End Sub

'
 用户选择缩放比例后执行
Private Sub cboZoom_AfterUpdate()
    On Error Resume Next

    Select Case Me.cboZoom.Value
        Case "10%"
            DoCmd.RunCommand acCmdZoom10
        Case "25%"
            DoCmd.RunCommand acCmdZoom25
        Case "50%"
            DoCmd.RunCommand acCmdZoom50
        Case "75%"
            DoCmd.RunCommand acCmdZoom75
        Case "100%"
            DoCmd.RunCommand acCmdZoom100
        Case "150%"
            DoCmd.RunCommand acCmdZoom150
        Case "200%"
            DoCmd.RunCommand acCmdZoom200
        Case "500%"
            DoCmd.RunCommand acCmdZoom500
        Case "1000%"
            DoCmd.RunCommand acCmdZoom1000
        Case "适合窗口"
            DoCmd.RunCommand acCmdFitToWindow
    End Select
End Sub

高级:保存用户的缩放偏好

如果你想让用户的缩放设置在关闭窗体后还能保留,可以这样写:

' 窗体加载时读取上次的缩放设置
Private Sub Form_Load()
    Dim savedZoom As String
    savedZoom = Nz(DLookup("ZoomLevel", "tblUserSettings", _
                  "UserName='
" & Environ("USERNAME") & "' And FormName='" & Me.Name & "'"), "100")

    '
 应用保存的缩放比例
    Select Case savedZoom
        Case "10": DoCmd.RunCommand acCmdZoom10
        Case "25": DoCmd.RunCommand acCmdZoom25
        Case "50": DoCmd.RunCommand acCmdZoom50
        Case "75": DoCmd.RunCommand acCmdZoom75
        Case "100": DoCmd.RunCommand acCmdZoom100
        Case "150": DoCmd.RunCommand acCmdZoom150
        Case "200": DoCmd.RunCommand acCmdZoom200
        Case "500": DoCmd.RunCommand acCmdZoom500
        Case "1000": DoCmd.RunCommand acCmdZoom1000
    End Select
End Sub

' 窗体关闭时保存当前缩放设置
Private Sub Form_Unload(Cancel As Integer)
    '
 这里需要你自己想办法获取当前缩放比例
    ' Access 没有直接提供读取当前缩放比例的属性
    '
 可以在每次缩放时记录到模块级变量
End Sub

注意: Access 没有提供直接读取当前缩放比例的属性,所以如果要保存用户设置,需要在每次缩放时自己记录下来。

这个功能能解决什么实际问题?

1. 高分辨率屏幕适配

现在 4K、5K 显示器越来越多,默认 100% 显示的话,Access 窗体上的文字和按钮会显得特别小。

以前你可能需要改控件大小、改字体大小,现在直接放大到 150% 或 200%,立马清晰。

2. 老年用户友好界面

如果你的 Access 系统是给上了年纪的人用的,放大到 150% 能让他们看得更清楚,不用眯着眼睛找按钮。

3. 数据密集型报表

有些报表数据特别密集,100% 显示的话一屏只能看到一部分。缩小到 50% 或 25%,能快速浏览整个报表的数据分布和布局。

4. 演示和培训

如果你要演示 Access 系统给别人看,或者做培训,放大到 200% 能让投影或者屏幕共享时看得更清楚。

5. 开发和调试

开发的时候,有时候需要看整体布局,有时候需要看具体细节。快速缩放能帮你切换视角,提高开发效率。

注意事项

1. 不是所有视图都支持缩放

  • 设计视图:不支持缩放

  • 布局视图:不支持缩放

  • 数据表视图、窗体视图、报表视图:都支持

2. 缩放不会改变设计

缩放只影响显示,不会改变窗体或报表的实际尺寸和控件大小。

这是好事,意味着你可以放心缩放,不用担心把设计搞乱。

3. 弹出窗体没有状态栏

弹出窗体(Popup = Yes)默认不显示状态栏,所以看不到缩放滑块。

但你可以用 Ctrl + 鼠标滚轮 或者键盘快捷键来缩放。

4. VBA 代码的错误处理

DoCmd.RunCommand 在不支持的视图里会报错,所以记得加 On Error Resume Next 或者用 On Error GoTo 来处理。

5. Access 版本要求

这个功能是 Access 365(Microsoft 365 订阅版)的最新更新,如果你用的是 Access 2019 或更早版本,可能没有这个功能。

和响应式窗体的区别

有人可能会问:我上次看到你写的响应式窗体文章,那个和这次的缩放功能有什么区别?

区别很大:

对比项响应式窗体(上次文章)缩放功能(本次)
原理改变控件的实际位置和尺寸只改变显示比例
是否改变设计改变(控件大小和位置变了)不改变(只是显示放大/缩小)
需要代码需要(Form_Resize 事件)不需要(内置功能)
适用场景窗口大小改变时自动调整布局用户主动调整显示比例
控件精细控制可以(每个控件独立控制)不可以(整体缩放)

简单说:

  • 响应式窗体:是为了让窗体在不同尺寸的窗口里都能合理显示,需要写代码

  • 缩放功能:是为了让用户根据自己需要放大或缩小显示,不需要写代码

两个功能可以同时用,不冲突。

总结

Access 这次的缩放功能更新,虽然看起来不起眼,但确实是个提升使用体验的实用功能。

核心要点:

  1. 缩放范围从 50%-500% 扩展到 10%-1000%

  2. 支持 报表视图、弹出窗体、连续窗体、嵌套窗体

  3. 提供 5 种缩放方式(菜单、滑块、Ctrl+滚轮、快捷键、VBA)

  4. VBA 代码用 DoCmd.RunCommand acCmdZoom200 这样的命令

  5. 缩放只影响显示,不改变设计

实际应用价值:

  • 高分屏适配

  • 老年用户友好

  • 数据密集报表浏览

  • 演示和培训

  • 开发调试效率

如果你的 Access 系统有这些需求,赶紧试试新的缩放功能吧。

如果你想在自己的窗体上加缩放控制,把前面的 VBA 代码复制过去就能用。


如果你想学习更多 Access 开发技巧,或者需要定制开发 Access 系统,我们可以提供从培训到开发的全流程支持:

技术培训

  • Access VBA 从入门到精通(线上/线下均可)

  • Access + SQL Server 企业级开发实战

  • Access 系统性能优化与架构设计

  • AI + Access 融合开发专题培训

定制开发

  • 企业 ERP / CRM / 进销存 / WMS / MES 等系统开发

  • 旧 Access 系统升级、性能优化与架构重构

  • AI 能力集成到现有 Access 业务系统

技术支持

  • 代码审查与重构建议

  • 疑难问题远程诊断

  • 一对一技术辅导

联系方式:

References

[1] www.edonsoft.com: http://www.edonsoft.com