Dav*_*vid 5 microsoft-excel microsoft-excel-2016
我在互联网上进行了广泛的搜索,但我发现的所有问题的解决方案都是关于如何防止 excel 调整现有表格或数据透视表中单元格的大小。我还在选项下的设置中进行了搜索,但没有看到任何可以解决我的问题的设置。
我的确切问题是我有一个工作表,我想在其中创建多个表,按年份存储有关我的薪水的信息。我已经做了第一年的第一个表格,我已经调整了列的大小以使数据易于阅读。但是,当我选择新标题并单击Format as Table 时,Excel 会调整所有列的大小以适应新文本。
我的一些标题不太适合列,但此表仅供个人使用,我更喜欢标题有明确的名称(虽然更长),以便以后更容易地引用它们。所以我希望有人能解决这个问题。不得不再次手动调整所有列的大小真的很烦人。
有两种方法可以实现此目的:
\n\nFormat as Table功能区工具。对于方法2,将以下代码添加到标准模块中:
\n\n\'============================================================================================\n\' Module : <any standard module>\n\' Version : 0.1.0\n\' Part : 1 of 1\n\' References : N/A\n\' Source : https://superuser.com/a/1332155/763880\n\'============================================================================================\nOption Explicit\n\nPublic Sub ToggleTable_NoResize()\n Dim \xc2\xa1 As Long\n\n Const s_DefaultStyle As String = "TableStyleMedium9" \' Change this for a different default style\n\n Dim asngColumnWidths() As Single\n ReDim asngColumnWidths(1 To Selection.Columns.Count)\n For \xc2\xa1 = LBound(asngColumnWidths) To UBound(asngColumnWidths)\n asngColumnWidths(\xc2\xa1) = Selection.Columns(\xc2\xa1).ColumnWidth\n Next \xc2\xa1\n Application.ScreenUpdating = False\n Dim loNewTable As ListObject\n On Error Resume Next\n Set loNewTable = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)\n On Error GoTo 0\n If loNewTable Is Nothing Then\n Dim loExistingTable As ListObject\n On Error Resume Next\n Set loExistingTable = Selection.ListObject\n On Error GoTo 0\n If Not loExistingTable Is Nothing Then\n loExistingTable.Unlist\n End If\n Else\n loNewTable.TableStyle = s_DefaultStyle\n For \xc2\xa1 = LBound(asngColumnWidths) To UBound(asngColumnWidths)\n Selection.Columns(\xc2\xa1).ColumnWidth = asngColumnWidths(\xc2\xa1)\n Next \xc2\xa1\n End If\n Application.ScreenUpdating = True\n\nEnd Sub\nRun Code Online (Sandbox Code Playgroud)\n\n使用快捷键进行设置:
\n\nOptions\xe2\x80\xa6; 并设置快捷键笔记:
\n\n表格的默认样式可以在代码中指定的位置进行更改。
\n\n作为一项附加功能,再次运行宏会将表格转换回正常的单元格范围。
\n