Keith的工作表使用A到H列。他希望能够按比例扩大每个列。例如,如果他选择了所有8列,那么如果他能够抓住H列的右边缘,并且当他向右拖动时,所有列都将成比例地间隔开,那就太好了。他想知道是否有一种方法可以进行这种列扩展。

为了更好地了解Keith在说什么,也许有一个例子。使用鼠标调整列宽的通常方法是选择列,然后在列标题之间向右或向左拖动分隔线。假设A列的宽度是5,B列的宽度是10,C列的宽度是15。如果您选择A:C并将C列标题右侧的分隔符拖到20,那将增加33%理想情况下,A和B列的大小也都应按33%的大小调整(根据Keith的要求),但是,它们的宽度都应设置为20以匹配C列。

此外,在拖动鼠标时按住修改键(Ctrl,Alt或Shift)无效。列宽仍设置为彼此相等。如果尝试右键单击并拖动,则除了显示“上下文”菜单外,不会执行任何其他操作。因此,从我们已经能够进行的所有测试中,我们无法按比例调整我们已经能够发现的Excel中的列宽。

也许最简单的方法是使用宏来调整列宽。

以下是这种方法的一个很好的例子。

Sub ProportionalWidth()

Dim C As Range     Dim sRaw As String     Dim sTemp As String     Dim P As Single

sRaw = InputBox("Increase width by how what % (0 to 100)?")

P = Val(sRaw)

If P >= 0 And P <= 100 Then         P = 1 + (P / 100)

sTemp = ""

For Each C In Selection.Columns             sTemp = sTemp & "Column " & ColumnLetter(C.Column)

sTemp = sTemp & ": " & C.ColumnWidth & " ==> "

C.ColumnWidth = C.ColumnWidth * P             sTemp = sTemp & C.ColumnWidth & vbCrLf         Next C         MsgBox sTemp     Else         MsgBox "Out of range; no adjustment made"

End If End Sub
Function ColumnLetter(Col As Long) As String     Dim Arr     Arr = Split(Cells(1, Col).Address(True, False), "$")

ColumnLetter = Arr(0)

End Function

在此示例中,实际上有两个宏。第一个(ProportionalWidth)更改所选列的宽度。第二个(ColumnLetter)用于将数字列号转换为列字母。它仅用于汇总前后宽度的报表(以sTemp表示)。

当您选择列并运行宏时,它会提示您要使这些列宽多少。输入介于0到100之间的数字,单击“确定”,列将按该百分比扩大。此外,您还将看到一个消息框,其中显示了每列的原始宽度和调整后的宽度。

请注意,此宏只会加宽列。如果要使用它也使列按比例缩小,则需要对其进行修改以处理负值。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13429)适用于Microsoft Excel 2007、2010、2013和2016。