用户窗体根据屏幕分辨率调整大小

2024-02-16

我有一个 Excel 用户表单,我想在打开时调整大小以适应屏幕分辨率。

我通过得到高度和宽度Application.Height and Application.Width,通常使用这两个参数和以下代码,应该可以解决问题:

Me.Top = Application.Top
Me.Left = Application.Left
Me.Height = Application.Height
Me.Width = Application.Width

问题是:Windows(至少从 7 开始)有一个参数可以设置桌面缩放,这似乎会损害代码。

例如,当从 100% 更改为 150% 时,表单的宽度和高度设置正确,但缩放不正确。我想根据 Windows 桌面缩放来更改它。

如何检索桌面缩放参数?


尝试这个:

Option Explicit
'Function to get screen resolution
#If VBA7 Then
    Private Declare PtrSafe Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As LongPtr) As Long
    'Functions to get DPI
    Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr 
    Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As LongPtr, ByVal nIndex As Long) As Long
    Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hDC As LongPtr) As Long
#Else
    Private Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
    'Functions to get DPI
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
#End If
Private Const LOGPIXELSX = 88  'Pixels/inch in X
Private Const POINTS_PER_INCH As Long = 72 'A point is defined as 1/72 inches

'Return DPI
Public Function PointsPerPixel() As Double
'hDC LongPtr if VBA7
 Dim hDC As Long
 Dim lDotsPerInch As Long

 hDC = GetDC(0)
 lDotsPerInch = GetDeviceCaps(hDC, LOGPIXELSX)
 PointsPerPixel = POINTS_PER_INCH / lDotsPerInch
 ReleaseDC 0, hDC
End Function

Private Sub UserForm_Initialize()

Dim w As Long, h As Long
    w = GetSystemMetrics32(0) ' Screen Resolution width in points
    h = GetSystemMetrics32(1) ' Screen Resolution height in points
With Me
    .StartUpPosition = 2
    .Width = w * PointsPerPixel * 0.5 'Userform width= Width in Resolution * DPI * 50%
    .Height = h * PointsPerPixel * 0.5 'Userform height= Height in Resolution * DPI * 50%
End With
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户窗体根据屏幕分辨率调整大小 的相关文章

  • For...VBA 中的下一个循环超出限制

    我正在使用一个For Next循环填充数组 如下所示 ReDim array 1 to 100 1 to 100 For i 1 to 100 Next i But the i计数器似乎总是转到 101 而不是停止在 100 因此 这会在我
  • 如何在未安装 Office 的情况下以编程方式创建、读取、写入 Excel?

    我对所有读取 写入 创建 Excel 文件的方法感到非常困惑 VSTO OLEDB 等 但它们都seem具有必须安装office的要求 这是我的情况 我需要开发一个应用程序 它将以 Excel 文件作为输入 进行一些计算并创建一个新的 Ex
  • 如何防止控件在 TableLayoutPanel 内调整大小时视觉上滞后?

    我有一个基于多个嵌套的中等复杂度的布局TableLayoutPanels 调整窗体大小会导致更深嵌套表内的控件在视觉上滞后于调整大小 首先 这使得它们看起来像是在调整表单大小时四处移动 但更糟糕的是 当它们滞后到足以离开分配的表格单元格时
  • 如何在不滚动的情况下截取整个电子邮件正文?

    我正在使用 OL2010 想要制作整个电子邮件的屏幕截图 不仅仅是 屏幕 可以用VBA或者外部程序来完成吗 有一个类似的问题 https stackoverflow com questions 4176340关于如何使用 C 实现这一点 注
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • 使用 javascript 调整图像大小以在画布 createPattern 中使用

    我见过一些关于如何调整图像大小的技巧 在 IMG 标签内使用 但我想在里面有一个图像变量 一个 Javascript 调整它的大小 然后使用 a 中的图像 context createPattern 图像 重复 我还没有找到任何提示 关于如
  • 字典、集合和数组的比较

    我正在尝试找出字典与集合和数组相比的相对优点和功能 我发现了一篇很棒的文章here http www experts exchange com articles 3391 Using the Dictionary Class in VBA
  • VBA根据单元格的值是否为零显示/隐藏行

    我有一个 Excel 工作表 我想根据另一个单元格中的值隐藏或取消隐藏某些行 简而言之 整个事情应该取决于单元格中的值C2 D2 E2 If C2 is blank我想rows 31 to 40被隐藏 如果是的话不为空 他们需要是visib
  • Word通过vba宏删除tabe列出现错误

    我想将excel中的数据复制到word表中 然后从表中删除一些列 我可以将数据复制到表中 但是当我删除列时会出现错误 无法访问此集合中的各个列 因为该表具有混合的单元格宽度 我的代码 Public Tbl1 As Table Sub cal
  • MS Access - 粘贴确认事件后

    当用户将记录直接粘贴到数据表子报表中时 是否可以在显示粘贴确认消息后捕获事件 我需要它能够在审计表中创建新记录时进行记录 通过捕获更新前 更新后和插入事件 我可以轻松创建已添加的记录集合 准备将详细信息插入审核日志 但是在所有这些事件触发后
  • 我可以用文本框设置变量名称吗? excel

    我可以使用 TextBox Vba Excel 设置变量的名称吗 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组 代码必须从文本框中获取字符串 并将该字符串设置为新创建的数组的名称 我只想在运行时创建一个新变量 或数组 据信
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • Outlook 无法识别一个或多个姓名

    我有以下 vba 代码 它读取邮箱并向任何发送无效代码作为邮箱回复的用户发送回复 但有时会收到运行时错误 Outlook 无法识别一个或多个名称 我的问题是 创建新的 MAPI 配置文件是否可以解决该问题 或者我是否需要添加一个代码来解析地
  • 根据单元格值向用户窗体添加复选框

    我对 VBA 很陌生 只有 3 天 但我发现它非常有用且易于使用 但现在我面临一个问题 我需要制作一个具有不同复选框的用户窗体 但我需要根据工作表某一列中使用的信息自动添加它们 我相信我可以使用 For Each Next 但我真的不知道如
  • Pandas 0.22.0:IndexError:读取 xls 时列表索引超出范围

    我正在尝试将 282Mb 65536 行 x 138 列 xls 文件加载到 pandas 数据框中 import pandas as pd import os filename r invoicing xls dir os path di
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 在 MS Word 中运行外部 vba 代码

    我可以将外部代码链接到 Word 文档吗 我有很多带有宏的 Word 文档 VBA 代码 全部使用相同的代码 我希望代码从外部源运行 而不是从所有这些文档中运行 这样 如果我必须更新代码 我只有一个地方需要更新 您可以创建一个模板并将其放入
  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 如何在 bash 脚本中执行命令,然后聚焦出现的窗口

    我有一个像这样的 bash 脚本 bin sh firefox Firefox 窗口打开 但没有焦点 我该怎么做才能让它自动获得焦点 我可以使用一些 X 窗口工具 命令 但如何获取 Firefox 的窗口 ID 窗口名称随着显示的 URL
  • 如何使带有列表数据源的tttableview顶部的蓝色条消失(在ios 5 beta上运行的程序)

    当程序在 ios 5 beta 上运行时 我的 tttableview 顶部会出现一个蓝色条 如果我在 ios 4 3 上运行程序 则不会出现蓝色条 该表配置为使用列表数据源 有谁知道是什么问题 ios 5 的 tableview api
  • Ajax 调用下载从 RESTful 服务返回的文件

    我对 AJAX 相当陌生 我正在使用 AJAX 向服务器发送请求 该服务返回一个文本文件 但返回数据时没有出现下载框 返回文件的rest服务如下 Path examples public class ExampleCodesRest POS
  • 在 Shiny 中下载 RenderTable() 数据帧上的处理程序

    我有一个闪亮的应用程序 它采用如下所示的 csv 文件 category action 并将其输入到数据框中以仅使用 action 过滤类别 可复制的应用程序 UI library shiny shinyUI fluidPage title
  • 再次为该片段创建 ViewModel

    我在 MainFragment 中创建视图模型 Override public void onActivityCreated Nullable Bundle savedInstanceState super onActivityCreate
  • Javafx 2 图表通过手绘调整大小

    我有一个在 JavaFX 2 0 中徒手绘制 XYChart 的代码 调整图表大小时遇到 问题 当我调整大小时 我遇到了徒手绘制的翻译问题 当我调整大小时 新绘图最初看起来超出了比例 但经过一点 图表移动 后 绘图它会自行修复 我该如何改进
  • 带取消功能的VBA密码输入

    我一直在使用 Daniel Klann 编写的标准密码文本框 http www ozgrid com forum showthread php t 72794 http www ozgrid com forum showthread php
  • 重命名包名称后出现“找不到符号 R”错误

    重命名我的项目包名称 使用重构 后 我收到此错误 Error 7 44 error cannot find symbol class R 我的全部R用法无效 我尝试手动修复它 但它对我不起作用 Invalidate chases Resta
  • Next.js 中未定义 localstorage

    我正在尝试将应用程序从 React 移至 Next 在 React 中我没有收到此代码的错误 let authTokens setAuthTokens useState gt localStorage getItem authTokens
  • MongoDB TTL过期检查的更改周期

    关于基于TTL索引的文档过期MongoDB 文档 https docs mongodb com manual core index ttl timing of the delete operation says 删除过期文档的后台任务每 6
  • 选项卡切换事件可用于 Google Chrome 扩展吗?

    作为 Google Chrome 扩展 是否可以监听选项卡切换 也就是说 在标签切换刚刚发生时收到通知 I want to make an extension that in fullscreen when switching tabs w
  • 如何使用 localstorage / ajax jquery 获取从第一页到第二页的单选按钮值

    目前正在处理本地存储 在第一页中 如果用户选择第二页面板中的第一个单选按钮 则必须隐藏两个单选按钮 如果用户选择单选按钮 则第二页验证中的一个文本字段不应发生 我不知道如何使用 localStorage 或 ajax 哪一个是最好的 当我看
  • Github 自述文件中的 .gif 水平居中

    我正在尝试将 gif 居中 这是 markdown 代码 Demo demo gif 上面的代码将我的 gif 对齐到左侧 见下图 所以 我尝试将 markdown 放入其中 p 像这样的标签 但它不起作用 p p align center
  • 如何在clickhouse中根据日期和时间段选择数据

    我想通过两者过滤一些数据yyyymmdd 日期 和hhmmss 时间 但是clickhouse不支持time类型 所以我选择datetime将它们结合起来 但如何做这样的事情 这是代码dolphindb 它支持second类型来表示hhmm
  • svnrdump 转储和 svnadmin 转储之间的区别

    我需要 svn 存储库的转储 我找到了两个解决方案 svnrdump dump And svnadmin dump svnrdump dump是相同的svnadmin dump 如果不是 这两个命令有什么区别 svnrdump生成相同的转储
  • UWP ListView DataTemplate 绑定到项目而不是属性

    如何将数据模板中的项目绑定到项目本身 而不是该项目的属性 我有一个将项目作为模型的用户控件 鉴于这些模型 public class Car public string Name get set public Color color get
  • QImage/QPixmap 大小限制?

    是否有任何已知的尺寸 空间限制QPixmap and or QImage记录的对象 我没有找到任何与此相关的有用信息 我目前在 OSX 和 Windows 上使用 Qt 4 7 3 我特别感兴趣的是 宽度 高度限制 限制取决于颜色格式 32
  • UTF-8 和 ISO-8859-1 有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有什么区别UTF 8 https en wikipedia org wiki UTF 8 and ISO 8859 1 https e
  • JSF:commandLink 作为 outputFormat 的参数

    我正在国际化一些 JSF 文件 因此正在外部化字符串 以及使用占位符的字符串连接 我对 JSF 的经验很少 今天和昨天 所以如果我的问题有一个明显的答案 请原谅 我一直在成功地使用 h outputFormat 标记 和 f param 标
  • 用户窗体根据屏幕分辨率调整大小

    我有一个 Excel 用户表单 我想在打开时调整大小以适应屏幕分辨率 我通过得到高度和宽度Application Height and Application Width 通常使用这两个参数和以下代码 应该可以解决问题 Me Top App