ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 易克赛儿

[求助] VBA如何获取单元格中字符的行数

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-26 11:06 | 显示全部楼层
file:///C:/Users/YDwwl/Desktop/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87.png

3楼的tanglf188 你好! 您的代码我看不懂,复制粘贴到工作簿中运行不起来。 想请你再帮我在以下附件中的工作簿中修改一下代码,并测试运行成功。谢谢!

自动调整行高VBA代码测试.rar

39.1 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-26 11:07 | 显示全部楼层

3楼的tanglf188 你好! 您的代码我看不懂,复制粘贴到工作簿中运行不起来。 想请你再帮我在以下附件中的工作簿中修改一下代码,并测试运行成功。谢谢!

TA的精华主题

TA的得分主题

发表于 2023-4-26 11:09 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-26 13:28 | 显示全部楼层

file:///C:/Users/YDwwl/Desktop/%E8%B0%83%E6%95%B4%E8%A1%8C%E9%AB%98%E6%B5%8B%E8%AF%95.JPG

代码提示: 运行时错误‘1004’ 类Range的AutoFit方法无效

我修改了一下,始终是这个提示

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-26 13:53 | 显示全部楼层

file:///C:/Users/YDwwl/Desktop/%E8%B0%83%E6%95%B4%E8%A1%8C%E9%AB%98%E6%B5%8B%E8%AF%95.JPG

你写的代码出行出错

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-26 13:58 | 显示全部楼层




  ovxyz 你好! 谢谢你热心帮助,你发给我的以上代码运行出错了
调整行高测试.JPG

自动调整行高VBA代码测试.rar

39.1 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2023-4-26 16:11 | 显示全部楼层
F列内容换行符的位置并不是理想的换行位置,有些行即使有换行符但内容也较多,一行也显示不下,要把各种因素考虑进去就要花些时间了,且你的表格中还有各种合并单元格,现在换个思路帮你解决下,就是取消所有的换行符,设定每行容纳的字符数量,这样就容易计算出自动换行的行数,因为夹杂全角、半角,所以计算行数和显示行数可能有一些出入。
Sub AutoRowHeight()
    Cells.Replace What:=Chr(10), Replacement:=""
    Cells.Replace What:=Chr(13), Replacement:=""
    Dim mr As Range, last&, rw&
    cs = 54 '每行容纳字符数量设定为54(27个汉字或全角字符),自己根据列宽调整。汉字全角字符占用2字节。
    last = Sheet1.Range("F" & Rows.Count).End(xlUp).Row
    For Each mr In ActiveSheet.Range("F7:F" & last)
        If LenB(mr.Value) Mod cs = 0 Then
            rw = LenB(mr.Value) / cs
        Else
            rw = Int(LenB(mr.Value) / cs) + 1
        End If
        If rw = 0 Then rw = 1
        mr.MergeArea.RowHeight = 15 * rw
        mr.HorizontalAlignment = xlCenter
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2023-4-26 16:30 | 显示全部楼层
本帖最后由 ovxyz 于 2023-4-26 16:34 编辑

我觉得你看看你的工作表名,是不是和我的一样。

sheets("sheet1") 这个名字得和你要调整的工作表名一致。包括大小写。

TA的精华主题

TA的得分主题

发表于 2023-4-26 17:26 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-27 09:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 易克赛儿 于 2023-4-27 10:40 编辑

感谢tanglf188 和 perfect131 的热心帮助, 我运行了一下你俩的代码,F列的文字不可以居中对齐,有很多行还是需要手工调整,不理想。 
  F列的文字在三行之内的,占90%多,这些行一定不要让公司领导去手工调整; F列有几行文字特别多的,可以让公司领导手工调整一下。

以下是我自己写的代码:

Private Sub CommandButton1_Click()
Dim I%, jsH%
  For I = 7 To 60
     If Len(Cells(I, 6)) > 70 Then Rows(I).RowHeight = 5 * (Len(Cells(I, 6)) / 10)
  Next
End Sub
      办法:当F列的一个单元格的字符数超过70个(2行)的时候,进行调整行高
运行后,就5行左右需要手工调整一下。

按F列自动调整行高VBA.rar

42.47 KB, 下载次数: 19

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

本版积分规则

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

GMT+8, 2024-7-1 02:19 , Processed in 0.043577 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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