Excel精英培训网

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

[已解决]在EXCEL中,能否用VBA代码,实现对当前工作表中有数据的列实现自动列宽

[复制链接]
发表于 2013-12-6 21:42 | 显示全部楼层 |阅读模式
在EXCEL中,能否用VBA代码,实现对当前工作表中有数据的列实现自动列宽

就是说,用VBA代码,对当前工作表中,有数据列,实现自动列宽

如果有,请大家帮写下代码,谢谢大家!
最佳答案
2013-12-6 22:27
yjwdjfqb 发表于 2013-12-6 22:15
这一句好用,如果这样呢

A至F这些列,有数据的自动列宽,但最宽的列,又不得超过50,怎么用代码写呢老 ...

Sub tr()
Dim a As Integer, i As Integer
a = Cells(1, Columns.Count).End(xlToLeft).Column '取第一行的最后一列的列号
For i = 1 To a
  Columns(i).EntireColumn.AutoFit  '每列自适应
   If Columns(i).ColumnWidth > 50 Then  '判断当前列的列宽是否大于50  大于则等于五十
     Columns(i).ColumnWidth = 50
   End If
Next i
End Sub
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-6 21:55 | 显示全部楼层
Sub ttt()
Dim i&
For i = 1 To Columns.Count
  If Application.CountA(Columns(i)) > 0 Then
  Columns(i).ColumnWidth = AutoFit
Next i
End Sub

评分

参与人数 1 +5 收起 理由
yjwdjfqb + 5 也很好用,谢谢你朋友!

查看全部评分

回复

使用道具 举报

发表于 2013-12-6 21:58 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-12-6 22:15 | 显示全部楼层
我心飞翔410 发表于 2013-12-6 21:58
Columns("A:F").EntireColumn.AutoFit

这一句好用,如果这样呢

A至F这些列,有数据的自动列宽,但最宽的列,又不得超过50,怎么用代码写呢老师,麻烦了!
回复

使用道具 举报

发表于 2013-12-6 22:27 | 显示全部楼层    本楼为最佳答案   
yjwdjfqb 发表于 2013-12-6 22:15
这一句好用,如果这样呢

A至F这些列,有数据的自动列宽,但最宽的列,又不得超过50,怎么用代码写呢老 ...

Sub tr()
Dim a As Integer, i As Integer
a = Cells(1, Columns.Count).End(xlToLeft).Column '取第一行的最后一列的列号
For i = 1 To a
  Columns(i).EntireColumn.AutoFit  '每列自适应
   If Columns(i).ColumnWidth > 50 Then  '判断当前列的列宽是否大于50  大于则等于五十
     Columns(i).ColumnWidth = 50
   End If
Next i
End Sub

评分

参与人数 1 +5 收起 理由
yjwdjfqb + 5 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-12-6 22:35 | 显示全部楼层
我心飞翔410 发表于 2013-12-6 22:27
Sub tr()
Dim a As Integer, i As Integer
a = Cells(1, Columns.Count).End(xlToLeft).Column '取第 ...

老师,就是想要你这样的,但,执行代码后,工作表没有执行自动列宽呀。。请老师斧正下。。
回复

使用道具 举报

发表于 2013-12-6 22:40 | 显示全部楼层
a = Cells(1, Columns.Count).End(xlToLeft).Column '取第一行的最后一列的列号
如果你第一列没数据的话就没反应 ,那个1 改改 比如第二列有数据就改为2  改为最多的那行的行号
回复

使用道具 举报

 楼主| 发表于 2013-12-6 22:50 | 显示全部楼层
我心飞翔410 发表于 2013-12-6 22:40
a = Cells(1, Columns.Count).End(xlToLeft).Column '取第一行的最后一列的列号
如果你第一列没数据的话就 ...

感谢老师的帮助!
回复

使用道具 举报

发表于 2013-12-7 23:51 | 显示全部楼层
真不错,又学到了一招。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 14:43 , Processed in 0.317166 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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