我在从服务器/数据库下载的文件创建表格时遇到问题。这是一个较旧的 .xls 文件。该文件中有一个包含 67 列和任意行数的列表(取决于数据量)。当我选择列表并从中创建表格时,会应用格式,这会更改列表的默认格式。我转到Disign > Table Styles
并单击clear
,但这不会清除所有应用的格式;新的列宽保持不变。
我需要创建表格时列宽不变,或者应用任何其他格式。这真的弄乱了我的文件,使它们无法用于以后使用。我需要创建不应用任何格式的表格。我在 Windows 7/64 位上使用 Excel 2016/1808/32 位。
谢谢 xD
答案1
此 VBA(宏)将帮助您创建无需任何格式和过滤器按钮的表格。
Sub TableWithoutStryle()
Dim Trange As Range
Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet1")
Set Trange = Application.InputBox(Prompt:= _
"Please select a range,,", _
Title:="Create Table", Type:=8)
Ws.ListObjects.Add(xlSrcRange, Trange, , xlYes).Name = "NewTable1"
Ws.ListObjects("NewTable1").TableStyle = ""
Ws.ListObjects("NewTable1").ShowAutoFilterDropDown = False
End Sub
怎么运行的:
- 按ALT+F11打开 VB 编辑器。
- 复制&粘贴本守则标准模块使用 Sheet。
- 运行宏并选择要转换为的所需数据范围桌子, 尽快输入框出現。
- 完成好的
- 您会发现所选数据范围现已转换为桌子没有任何格式,(使用表设计命令检查)。
注意:
上面的代码Sheet & Table name
是可编辑的。
答案2
我添加了代码来捕获列宽并在插入表格后恢复它们:
Sub TableWithoutStryle()
Dim Trange As Range
Dim Ws As Worksheet
Dim ColWidth()
Set Ws = ActiveSheet
Set Trange = Selection
NumCols = Trange.Columns.Count
ReDim ColWidth(NumCols)
For i = 1 To NumCols
ColWidth(i) = Trange(1, i).ColumnWidth
Next i
Ws.ListObjects.Add(xlSrcRange, Trange, , xlYes).Name = "NewTable1"
Ws.ListObjects("NewTable1").TableStyle = ""
Ws.ListObjects("NewTable1").ShowAutoFilterDropDown = False
For i = 1 To NumCols
Trange(1, i).ColumnWidth = ColWidth(i)
Next i
End Sub