根据用户输入自动在Excel中自动调整列宽

时间:2015-01-08 07:02:02

标签: excel excel-vba excel-formula vba

在我的电子表格中,我需要在Excel中自动调整列宽。如果用户输入的最长单词应该根据单词/整数自动增加列。我不希望我的用户增加列的宽度。为此,我从Internet得到了一个公式,这是一种方法,可以在活动工作簿的所有工作表中使所有列自动适合输入的数据超过当前列宽。

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

Dim actCol, curCol 

actCol = Target.Column 

If actCol > 52 Then 
    curCol = Chr(Int((actCol - 1) / 52) + 64) & _ 
    Chr(Int((actCol - 27) / 26) + 64) & _ 
    Chr(Int((actCol - 27) Mod 26) + 65) 
ElseIf actCol > 26 Then 
    curCol = Chr(Int((actCol - 1) / 26) + 64) & _ 
    Chr(Int((actCol - 1) Mod 26) + 65) 
Else 
    curCol = Chr(actCol + 64) 
End If 

Columns(curCol & ":" & curCol).AutoFit 

End Sub

打开工作簿,按ALT + F11(功能键F11)

双击'本工作簿'在左上象限中的Microsoft Excel VBA项目对象中。

将事件处理程序粘贴到右侧的白色编辑区域(右键单击区域内部并“粘贴'”)。

关闭VBE(红色按钮带白色' x' ---右上角)。

保存工作簿。

我使用了这个公式,它的工作部分正确。但是如果整数超过4个字符,当给定的输入显示为####时,我仍然面临问题。如何解决这个问题?

截图:

enter image description here

注意:由于该文件包含一些机密信息,因此我无法在此处共享文件。

1 个答案:

答案 0 :(得分:0)

在尝试理解您在互联网上找到的代码后,我认为这是一种非常复杂的方式:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Target.EntireColumn.AutoFit
End Sub

这对我有用。在尝试确定列字母时,您的代码中可能出现错误,您可以试试这个吗?