私は隠れた列に奇妙な問題があります。手動でではなく、コード内に隠されている場合にのみ発生します。私は列が非表示になりますExcel VBAの隠しリスト列のシフト
lcTableCols = ListObjects("Table1").listcolumns
lcTableCols("ColC").Range.EntireColumn.Hidden = True
を記述する場合、私はその列を追加したり、左に列を削除する場合
ColA ColB ColC ColD 1 A 3 1 1 B 3 2 1 C 3 3
: はこれを考えると
lcTableCols("ColB").Delete
隠しコラムが「シフト」するので、テーブルは次のようになります。
ColA ColC 1 3 1 3 1 3
ColDが非表示になりました。これはリスト列でのみ行います。予想通り、次の作業を行う:
Columns(5).hidden = true
Columns(3).delete
私はそれが「.Range.EntireColumn」とは何かを持っていると仮定することができます。より良い方法は何ですか?私は、名前付きの列を非表示にできるように関数を設定したいが、別の方法(lcTableCol( "ColE")。index)を行うことができることはわかっているが、大きなシートを整形しているので多くをリファクタリングする必要がある。大きな問題ではありませんが、なぜこれが起こっているのか不思議です。
私は見る!はい。私はこれはあなたの下に、または次の複数のテーブルを持っている場合にも当てはまりますか? – Falthazar
@ダニエルたとえば、。実際には、テーブルから削除された*の同じカラムにあるすべてのデータは保持されなければなりません。したがって、実際には、操作はワークシートから一連の「セル」を削除することと同じです。これらのセルの右側のすべてが左に移動します。 –
そして、Excelは個々のセルを隠すことができないので、列や行全体を隠すことはできません。シフトされたセルは目に見える列になり、表示されます。 –