![書式設定なしで新しいテーブルを作成する](https://rvso.com/image/1585782/%E6%9B%B8%E5%BC%8F%E8%A8%AD%E5%AE%9A%E3%81%AA%E3%81%97%E3%81%A7%E6%96%B0%E3%81%97%E3%81%84%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B.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+F11VB エディターを開きます。
- コピー&ペーストこの規約は標準モジュールシート付き。
- マクロを実行し、変換したいデータ範囲を選択します。テーブル、できるだけ早く入力ボックスが表示されます。
- 終了わかりました
- 選択したデータ範囲が次のように変換されましたテーブルフォーマットなし(テーブルデザインコマンドを使用して確認)。
注意
上記のコードは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