![建立新表,不帶任何格式](https://rvso.com/image/1585782/%E5%BB%BA%E7%AB%8B%E6%96%B0%E8%A1%A8%EF%BC%8C%E4%B8%8D%E5%B8%B6%E4%BB%BB%E4%BD%95%E6%A0%BC%E5%BC%8F.png)
我在從伺服器/資料庫下載的檔案建立表格時遇到問題。這是一個較舊的 .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 & 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