【Excel】一行一行地调整行高太麻烦了。。。

常在Excel走,哪有不调行高?

如果是碰到这种情况:

处女座的你是否会关掉、删了它?

    其他星座呢?嘴上笑嘻嘻,心里MMP地也要忍痛把格式调好...

接下来就教大家怎么简单又快速地调整行高吧。

1、自动调整行高

Excel的单元格有“自动调整行高”和“自动调整列宽”的模式,方法就是把鼠标放在需要调整的单元列(行)边上,当鼠标变成【十】时,双击,就可以了。

2、批量调整

上面的方法只适用于不含【合并单元格】的表格,如果表格中包含了【合并单元格】,则无法通过【自动调整】来实现

如上图那样,根本【自动】不了。。。

所以还是只能用【宏】了,代码如下:

 Sub My_MergeCell_AutoHeight()

 Dim rh As Single, mw As Single

 Dim rng As Range, rrng As Range, n1%, n2%

 Dim aw As Single, rh1 As Single

 Dim m$, n$, k

 Dim ir1, ir2, ic1, ic2

 Dim mySheet As Worksheet

 Dim selectedA As Range

 Dim wrkSheet As Worksheet

Application.ScreenUpdating = False

 Set mySheet = ActiveSheet

 On Error Resume Next

Err.Number = 0

 Set selectedA = Application.Intersect(ActiveWindow.RangeSelection, mySheet.UsedRange) '返回重叠range

        selectedA.Activate

 If Err.Number <> 0 Then

g = MsgBox("请先选择需要'最合适行高'的行!", vbInformation)

 Return

 End If

        selectedA.EntireRow.AutoFit

 Set wrkSheet = ActiveWorkbook.Worksheets.Add '创建个临时sheet来折腾

 For Each rrng In selectedA

 If rrng.Address <> rrng.MergeArea.Address Then '找出合并单元格

 If rrng.Address = rrng.MergeArea.Item(1).Address Then '合并单元格第一格与地址对应

                    'If (Application.Intersect(selectedA, rrng).Address <> rrng.Address) Then

 '    GoTo gotoNext

 'End If

 Dim tempCell As Range

 Dim width As Double

 Dim tempcol

width = 0

 For Each tempcol In rrng.MergeArea.Columns

width = width + tempcol.ColumnWidth

 Next

                    wrkSheet.Columns(1).WrapText = True

                    wrkSheet.Columns(1).ColumnWidth = width

                    wrkSheet.Columns(1).Font.Size = rrng.Font.Size

                    wrkSheet.Cells(1, 1).Value = rrng.Value

                    wrkSheet.Activate

 'wrkSheet.Cells(1, 1).RowHeight = 0

                    wrkSheet.Cells(1, 1).EntireRow.Activate

                    wrkSheet.Cells(1, 1).EntireRow.AutoFit

                    mySheet.Activate

                    rrng.Activate

 If (rrng.RowHeight < wrkSheet.Cells(1, 1).RowHeight) Then

 Dim tempHeight As Double

 Dim tempCount As Integer

 Dim addHeightRow

tempHeight = wrkSheet.Cells(1, 1).RowHeight + 10 '自动调整后行高+10

tempCount = rrng.MergeArea.Rows.Count '多行合并单元格的行数


 For Each addHeightRow In rrng.MergeArea.Rows '选区中每个row赋值

 If (addHeightRow.RowHeight < tempHeight / tempCount) Then

addHeightRow.RowHeight = tempHeight / tempCount

 End If

tempHeight = tempHeight - addHeightRow.RowHeight

tempCount = tempCount - 1

                        Next


 End If

 End If

 Else

 If rrng.WrapText = True Then '非合并单元格、自动换行

rrng.RowHeight = rrng.RowHeight + 3 '非合并行+3,以适应打印

 End If

 End If

 Next

Application.DisplayAlerts = False '删除工作表警告提示

        wrkSheet.Delete

Application.DisplayAlerts = True

Application.ScreenUpdating = True

 End Sub

效果如下:

3、添加到按钮功能

①新建一个空白文档:

②复制上面的宏,粘贴:

③保存成【Excel97-2003加载宏(*.xla)】

这时它的路径会自动变成【C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns】

然后改个容易辨识的名字:

保存。

④在【加载项】里找到它

Excel2007~2016:【开始】-【Excel选项】-【加载项】-【转到】

Excel2013~2016:还可以【开发工具】-【Excel加载项】

⑤添加自定义按钮

以后打开其他表格都会有这个按钮了


文件已经上传网盘,下载后直接放在:

C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns

然后在Excel选择【加载项】即可找到它


关注公众号,在后台回复Excel行高即可获取上述的.xla文档

微信搜索公众号@圣创杂学堂,即可获取每天更新

原创不易,转载请保留出处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • VBA订制工具栏 http://club.excelhome.net/thread-1047254-1-1.htm...
    大海一滴写字的地方阅读 2,278评论 0 0
  • 本例为设置密码窗口 (1) If Application.InputBox(“请输入密码:”) = 1234 Th...
    浮浮尘尘阅读 13,777评论 1 20
  • 转自链接 目录 1.认识NPOI 2.使用NPOI生成xls文件 2.1创建基本内容 2.1.1创建Workboo...
    腿毛裤阅读 10,720评论 1 3
  • 也许你已经做了上千张表格,也许你用函数算了上千复杂的运算。也许认为excel不过如此,今天25招秘技希望可以帮到大...
    南屋阿米佛头阅读 3,756评论 0 51
  • 第七期写作训练营开营了! 无意中看到30天写作训练营七期即将开班,我就开始心动了。几乎没多想就点击报名,踌躇满志,...
    闪亮的写作者阅读 402评论 0 2