Excel精英培训网

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

怎么获得宽度的像素

[复制链接]
发表于 2013-10-5 12:09 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2020-1-22 12:29 编辑

如题,我拉动单元格宽度的时候,会提示入图:宽度:20.00(145像素)

求问:怎么获得这个145的值,感谢


111.jpg
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-10-5 13:47 | 显示全部楼层
  1. Sub abc()
  2. MsgBox Range("c1").Width / 0.75
  3. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-10-5 15:08 | 显示全部楼层
美斯特邦威 发表于 2013-10-5 13:47

不对,请注意,就算宽度相同,像素也会不同,所以不能直接换算
回复

使用道具 举报

发表于 2013-10-6 11:11 | 显示全部楼层
本帖最后由 香川群子 于 2013-10-6 11:19 编辑
xdwy81129 发表于 2013-10-5 15:08
不对,请注意,就算宽度相同,像素也会不同,所以不能直接换算


列宽(ActiveCell.ColumnWidth)和像素的关系,和实际字体大小的设置有关:


列宽20 字体12号时,像素=165

列宽20 字体10号时,像素=145

列宽20 字体 9号时,像素=125


但不管如何设置,2楼代码都是有效的:

Sub test()
    MsgBox ActiveCell.Width / 0.75
End Sub

因为VBA中的单元格.Width属性值不是你所看到的列宽ActiveCell.ColumnWidth=20,
而是返回=93.75/108.75/123.75等和实际字体设置有关的列宽值(像素的3/4)所以不会错。



…………
下面公式可以计算在使用标准12号字体时的列宽.ColumnWidth(=20或其他)对应的像素值。
w=Activecell.ColumnWidth
MsgBox Application.Round(IIf(w < 1, w * 13, (w - 1) * 8 + 13), 0)

而在设置了其它大小的字体时,是无法这样直接计算的。
因此,2楼代码是最佳答案。
(使用了VBA就没有必要根据.ColumnWidth来推算像素了,直接用.Width/0.75即可)




回复

使用道具 举报

发表于 2013-10-6 11:29 | 显示全部楼层
注意这个标准字体的设置,必须在菜单选项中对整个Excel进行基本设置,然后还要关闭Excel后重新启动才能生效的。

不是对某些单元格进行字体设置就能达到的效果。



回复

使用道具 举报

发表于 2013-10-6 12:41 | 显示全部楼层
字号=6时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 7, (w - 1) * 4 + 7), 0) '字号=6

字号=8或=9时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 11, (w - 1) * 6 + 11), 0) '字号=8 或=9

字号=10时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 12, (w - 1) * 7 + 12), 0) '字号=10

字号=11或=12时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 13, (w - 1) * 8 + 13), 0) '字号=11 或=12

字号=14时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 17, (w - 1) * 10 + 17), 0) '字号=14

字号=16时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 18, (w - 1) * 11 + 18), 0) '字号=16

…………




回复

使用道具 举报

发表于 2020-1-21 16:37 | 显示全部楼层
学习了
回复

使用道具 举报

 楼主| 发表于 2020-2-12 19:39 | 显示全部楼层
香川群子 发表于 2013-10-6 12:41
字号=6时, 列宽w(.ColumnWidth) 和像素p的关系式:
p = Application.Round(IIf(w < 1, w * 7, (w - 1) *  ...

回顾再学习,总是很精彩
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 23:44 , Processed in 0.379255 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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