Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4608|回复: 13

[已解决]如何用VBA判断显示器的分辨率

[复制链接]
发表于 2011-8-20 07:14 | 显示全部楼层 |阅读模式
写完一个VBA程序时,朋友多数让给设计一个界面,在本人的19液晶显示器(分辨率是1440*900)设置完之后,存到笔记本电脑上,或是17纯平显示器上,不能自动适应分辨率,不少按钮在屏幕外面,严重影响了美化效果,
如何用VBA判断一下,是多大的分辨率,然后再根据分辨率设计主界面图片大小的代码,怎么写啊,请朋友帮忙
最佳答案
2011-8-20 10:02
本帖最后由 zjdh 于 2011-8-20 10:08 编辑
  1. Option Explicit
  2. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  3. Const SM_CXSCREEN = 0
  4. Const SM_CYSCREEN = 1
  5. Sub Get_System_Metrics()
  6. Dim XVal As Long, YVal As Long,R
  7. YVal = GetSystemMetrics(SM_CYSCREEN)
  8. XVal = GetSystemMetrics(SM_CXSCREEN)
  9. 'MsgBox "您的屏幕分辨率为: " & XVal & " X " & YVal
  10. R = Application.Min(XVal / 1440, YVal / 900) * 100
  11. ActiveWindow.Zoom = R
  12. End Sub
复制代码
发表于 2011-8-20 08:30 | 显示全部楼层
本帖最后由 zjdh 于 2011-8-20 09:57 编辑

  1. ‘返回屏幕分辨率
  2. Option Explicit
  3. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  4. Const SM_CXSCREEN = 0
  5. Const SM_CYSCREEN = 1
  6. Sub Get_System_Metrics()
  7. Dim XVal As Long, YVal As Long
  8. YVal = GetSystemMetrics(SM_CYSCREEN)
  9. XVal = GetSystemMetrics(SM_CXSCREEN)
  10. MsgBox "您的屏幕分辨率为: " & XVal & " X " & YVal
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2011-8-20 08:32 | 显示全部楼层
回复 ycb20010823 的帖子

  1. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  2. Const SM_CXSCREEN = 0
  3. Const SM_CYSCREEN = 1

  4. Sub Get_System_Metrics()
  5.     Dim X As Long, Y As Long
  6.     Y = GetSystemMetrics(SM_CYSCREEN)
  7.     X = GetSystemMetrics(SM_CXSCREEN)
  8.     MsgBox "您的屏幕分辨率为: " & X & " X " & Y
  9. End Sub
复制代码

回复

使用道具 举报

发表于 2011-8-20 08:36 | 显示全部楼层
这也能,看来是万能啊
回复

使用道具 举报

发表于 2011-8-20 08:47 | 显示全部楼层
得到分辨率再与显示比例挂钩就可以啦,显示比例语句:
ActiveWindow.Zoom = 75   ‘显示比例75%
回复

使用道具 举报

发表于 2011-8-20 10:02 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zjdh 于 2011-8-20 10:08 编辑
  1. Option Explicit
  2. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  3. Const SM_CXSCREEN = 0
  4. Const SM_CYSCREEN = 1
  5. Sub Get_System_Metrics()
  6. Dim XVal As Long, YVal As Long,R
  7. YVal = GetSystemMetrics(SM_CYSCREEN)
  8. XVal = GetSystemMetrics(SM_CXSCREEN)
  9. 'MsgBox "您的屏幕分辨率为: " & XVal & " X " & YVal
  10. R = Application.Min(XVal / 1440, YVal / 900) * 100
  11. ActiveWindow.Zoom = R
  12. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-8-22 17:40 | 显示全部楼层
我的最终要求就是,我的表格里输入一张做为界面的图片,打开后,这个图片,能自动适应不同的显示器,比如22液晶的1680*1050分辨率,能全屏,拿到CRT17上的1024*768分辨率,也能满屏,上传了附件,请朋友再给看一下!!

工资表.rar

28.76 KB, 下载次数: 11

回复

使用道具 举报

发表于 2011-8-22 20:37 | 显示全部楼层
由于横向与垂直像素比不同还是有点不尽满意,基本可以用用:
自适应界面.rar (30.85 KB, 下载次数: 32)
回复

使用道具 举报

发表于 2011-8-22 20:44 | 显示全部楼层
如果在某个分辨率下满屏程度不够,可以直接调整界面(图片大小),保存即可,不过也要兼顾一下其他分辨率的显示情况!
回复

使用道具 举报

发表于 2011-8-21 11:13 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 15:13 , Processed in 0.472264 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表