gpt4 book ai didi

vba - Excel VBA 隐藏列表列移位

转载 作者:行者123 更新时间:2023-12-02 21:27:09 27 4
gpt4 key购买 nike

我在隐藏列方面遇到了一个奇怪的问题。这似乎只有当它们隐藏在代码中时才会发生,而不是手动发生。鉴于此:

ColA    ColB    ColC    ColD1       A       3       11       B       3       21       C       3       3

If I write

lcTableCols = ListObjects("Table1").listcolumns
lcTableCols("ColC").Range.EntireColumn.Hidden = True

该列将被隐藏,但如果我随后添加一列或删除左侧的一列:

lcTableCols("ColB").Delete

隐藏列“移动”,因此现在表格如下所示:

ColA    ColC1       3       1       3       1       3       

With ColD now hidden. It only does this with list columns. Doing the following works as expected:

Columns(5).hidden = true
Columns(3).delete

我只能假设它与“.Range.EntireColumn”有关。更好的方法是什么?我希望该函数能够隐藏命名列,并且我知道我可以用另一种方式来实现(lcTableCol("ColE").index),但我正在格式化一张大表,并且需要进行大量重构。这不是一个大问题,但我很好奇为什么会发生这种情况?

最佳答案

您隐藏了一个EntireColumn (C),然后仅从表中而不是从工作表中删除列 (colD)。这是不明确的,删除​​只是移动了表的列,但 Excel 必须保留“整个列”,因为它可能有表外的其他数据!

如果您还通过 EntireColumn 进行删除,则行为符合预期:

lcTableCols("ColC").Range.EntireColumn.Hidden = True
lcTableCols("ColB").Range.EntireColumn.Delete

这里只有 AD 列。

关于vba - Excel VBA 隐藏列表列移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com