关于Excel行高调整的问题(搜了半天每一个正确答案,大神请进)?

Excel行高调整,根据内容自动调整,是比较好用的,但是自动调整后,有些行会显得特别窄(因为其内容只占了一行),这样又很难看。
我希望把每个行的行高都设置的高一点,同时使用自动调整行高功能后,又不会有些行显得特别窄。
比如我希望每个行的最小行高,都是30,这个统一设置就行了。但这时候可能有些行30的行高不够,只能一个个去调整,因为一使用自动调整行高,有些行就低于30了。
能否把每个行的默认行高都调整成30,然后通过全部自动调整行高后,该加高的加高,而最低的也会保持在30,而不会变小?
该问题网上还找不到答案,求大神解答。

这个问题,要通过VBA编程来完成。

第1步:按 ALT键+F11键 打开VBA编辑器。

第2步:点顶部的:插入---模块

第3步:在左侧双击模块,在右侧粘贴代码。

第4步:将鼠标点在sub程序内部,再点顶部画粉色圆圈的按钮,可执行该程序。

提示1:本程序设置的是活动工作表,即当前屏幕所显示的工作表。

提示2:运行程序前,记着先将光标点击在程序内部。

提示3:可在代码内根据绿字注释的指引,自行修改最小行高的数值。

提示4:如果希望关闭工作簿时能保存代码,可将工作簿另存为.xlsm启用宏的工作簿格式。

代码如下,供复制:

Sub 完美行高()

'提示:本程度设置的是屏幕当前所显示的活动工作表

'**************************************************

Dim myr As Long

myr = 30 '请在本行等号右边修改最小行高。

'**************************************************

Cells.Rows.AutoFit '全表自动调整行高

Dim g As Range, i As Long

Set g = Cells.Find("*", , , , , xlPrevious) '逆向查找非空单元格

If g Is Nothing Then '如果是空表

Cells.Rows.RowHeight = myr '那么直接全表行高设置为myr

Else '否则,即如果不是空表

'遍历表上部的已使用行,逐行判断行高

For i = 1 To g.Row '从第1行遍历到最大非空行

If Rows(i).RowHeight < myr Then '如果第i行的行高小于myr

Rows(i).RowHeight = myr '那么将第i行的行高设置为myr

End If

Next

'针对表下部的未使用行,统一设置行高

If g.Row < Rows.Count Then

Rows(g.Row + 1 & ":" & Rows.Count).RowHeight = myr

End If

End If

'弹出提示对话框

MsgBox "工作表(" & ActiveSheet.Name & ")的行高设置成功!", 64

End Sub

追问

谢谢。这个代码能一定程度解决问题,就是我先点击自动调整行高,然后运行代码,这样可以保证最小行距是30。
但问题在于,表格内容是在不断变化中的。在这个模式无法根据表格内容的调整,自动调整行高。
如果全选自动调整行高,最小行距又会低于30,又需要重新运行一次代码。这样虽然也能解决问题,但会比较麻烦。
能否把最小行高,设置为默认就是30?这样不管什么时候选择自动调整行高,最小行高都不会低于30。

追答

首先,我要指出的是,不需要你手动操作"自动调整行高",在代码中有"自动调整行高"的命令。

另外,如果你需要在表格发生变更时,就自动执行一次程序,可以继续加代码:

看下图:

按ALT+F11打开VBA编辑器,在左侧双击你需要调行此程序的工作表,在右侧加入如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

Call 完美行高

End Sub

假如,你需要在本工作簿中的所有工作表中,都自动调用此程序,就不要按上边的的加,按下边的加吧,可以对所有工作表生效:

看下图:

按ALT+F11打开VBA编辑器,在左侧双击ThisWorkbook,在右侧加入如下代码:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Call 完美行高

End Sub

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜