ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 792|回复: 10

请问可以用vba判断单元格是否能显示全部内容吗

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-7 09:55 | 显示全部楼层 |阅读模式
由于工作需要将excel的文档打印在固定格式的预印制合同上,比如某单元格(这个单元格的大小固定不变)存放的是居住地址数据,每个客户的地址长度差异很大,想要达到的目的是单元格大小不变的情况下用vba通过调整单元格字符大小以及换行实现地址打印出来是字体最大而又能在预制定合同中全部打印出来。我的想法是初始设定一个最大的字体,然后判断内容是否能在单元格中全部显示,如果不能就进行换行,如果还是不行就逐步缩小字体,直至能容纳;不过没能找到判断单元格是否能够显示内容的方法,还望赐教!

TA的精华主题

TA的得分主题

发表于 2024-1-7 10:06 | 显示全部楼层
设置单元格为自动换行就可以了,会根据内容改变单元格的行高

TA的精华主题

TA的得分主题

发表于 2024-1-7 11:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-8 22:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lizhipei78 发表于 2024-1-7 10:06
设置单元格为自动换行就可以了,会根据内容改变单元格的行高

不行呢,因为单元格对应的是预印制合同的填写区域,大小是固定了的,只能在自动换行的基础上调整字符大小使之可以在单元格内显示

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-8 22:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
perfect131 发表于 2024-1-7 11:43
可以判断,参考
https://club.excelhome.net/thread-1661066-1-1.html?_dsign=953d5959

受到了启发,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-9 08:07 | 显示全部楼层
今天试了一下,单元格设成自动换行,然后通过统计总字数来确定字体大小来满足所有字符全部在固定的单元格显示。问题来了,当单元格引用的数据存在较长数字的时候且数字本来的行末就有可能自动放到下一行开始处,这样有可能影响到单元格后面的内容显示不全了。请问有没有好一点的解决方法。如果在vba里可以得到单元格里的字符的实际行数,这就会好办了,不过没找到相关的问题解答,或者可以像word一样可以设置“允许西文在单词中间换行”也行,不过也没找到解答。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-9 13:32 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求解答,因为是合同打印,如果出现部分字不能打印出来会影响合同效力,期盼、感谢!

TA的精华主题

TA的得分主题

发表于 2024-1-9 14:05 | 显示全部楼层
可以用len判断输出文字的数量来设置字号,比如10个字以内,字号为9,10到20个字字号为8,以此类推,如要字数太多,缩减字号到一定程度无法辩识则提示让用户简写

TA的精华主题

TA的得分主题

发表于 2024-1-9 16:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
笨办法,自己测试。某个单元格的宽度、高度已经确定,量一下是几毫米;然后设定好字体、字号,看看一行最多能容纳几个字,最多能容纳几行等数据,记录下来。最后形成一个在一定的字体、字号下,这个单元格容纳的字数的序列。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-9 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
目前也是用这个方法设置字号,不过当单元格的内容包含文字和数字时且如果凑巧数字在行末这时本来在行末的一串数字会被安排在下一行,这样就有可能全文字可以放得下而带有部分数字的时候可能放不下。如果这时候增加一个检测如果实际行数比设想的行数多的情况下进一步缩小字体或许可以解决问题,但现在还没找到判断自动换行的单元格有多少行的办法。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 11:27 , Processed in 0.041771 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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