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

Hi,大家好!
Access老早之前更新了一个放大的功能,再经过几个BUG修正之后,功能也正常了,高分屏放大了也不会像之前那么恶心了,但这个功能有什么好讲的么?手工操作当然没有啥,但要给大家讲一下这个功能用VBA怎么写!
试了一下,窗体、报表、表、查询,全都能缩放了。而且缩放范围从原来的 50% - 500%,直接扩展到了 10% - 1000%。
能缩放什么?
先说说这次更新到底支持哪些对象:
2. 报表(Report)
以前报表只能在打印预览里调整显示比例,现在报表视图(Report View)也能缩放了。
这意味着你可以:
放大检查报表里的具体数值
缩小查看整个报表的布局和数据分布
报表嵌在窗体里时,跟着窗体一起缩放
3. 表和查询
数据表视图本来就支持缩放,现在范围更广了。数据密集的时候缩小看,看具体内容的时候放大,非常方便。
怎么缩放?
微软给了 5 种方式,你可以按自己的习惯选:
方法 1:功能区菜单
点击功能区的 "视图" 选项卡,找到 "缩放" 菜单,里面有:
10%
25%
50%
75%
100%
150%
200%
500%
1000%
适合窗口
方法 2:状态栏滑块
窗口右下角的状态栏有个滑块,直接拖动就能缩放。
这是最直观的方式,适合需要微调的情况。
方法 3:Ctrl + 鼠标滚轮
按住 Ctrl 键,滚动鼠标滚轮:
这是最快的方式,适合频繁调整缩放比例。
方法 4:键盘快捷键
方法 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 这次的缩放功能更新,虽然看起来不起眼,但确实是个提升使用体验的实用功能。
核心要点:
缩放范围从 50%-500% 扩展到 10%-1000%
支持 报表视图、弹出窗体、连续窗体、嵌套窗体
提供 5 种缩放方式(菜单、滑块、Ctrl+滚轮、快捷键、VBA)
VBA 代码用 DoCmd.RunCommand acCmdZoom200 这样的命令
缩放只影响显示,不改变设计
实际应用价值:
高分屏适配
老年用户友好
数据密集报表浏览
演示和培训
开发调试效率
如果你的 Access 系统有这些需求,赶紧试试新的缩放功能吧。
如果你想在自己的窗体上加缩放控制,把前面的 VBA 代码复制过去就能用。
如果你想学习更多 Access 开发技巧,或者需要定制开发 Access 系统,我们可以提供从培训到开发的全流程支持:
技术培训
定制开发
技术支持
联系方式:
References
[1] www.edonsoft.com: http://www.edonsoft.com