【问题标题】:Excel VBA AutoFit based on a certain range?Excel VBA AutoFit 基于一定范围?
【发布时间】:2018-04-26 13:52:04
【问题描述】:

我可以使用Range("A3:D9").EntireColumn.AutoFit 来根据每列中最宽的列固定列宽A:D

但是,Range("A3:D9").AutoFit 不起作用 - 我想我明白为什么,AutoFit 是一种仅适用于 EntireColumn 的方法! - 我想?!

有没有办法让它工作 - 使用 AutoFit 根据 我的范围内每列中的最大 col 宽度not 来修复列宽整列?

【问题讨论】:

  • 您是否尝试过手动操作?测试这些单元格中最长的字符串,然后据此调整列宽?
  • 您可以遍历每个单元格以找到最大长度或使用公式?或者将相关单元格复制到另一张纸上,在那里自动调整并找到结果宽度。
  • 试试Range("A3:D9").Columns.AutoFit
  • 所以您希望 A:D 列的宽度彼此相同,并且宽度取决于 A:D 列中的最大列宽?
  • 每个人都提出了有趣的想法,但我尝试了@BrakNicku's 并且效果很好。请将此作为答案,以便我接受! - 并且不完全是 Scott - 彼此的宽度不同,每列与列范围内的最大宽度一样宽,而不是整个列

标签: vba excel


【解决方案1】:

来自AutoFit manual

Range 对象必须是一行或一组行,或者一列或一组列。否则,此方法会产生错误。

因此,仅针对特定区域自动调整列/行的解决方案是使用:

Range("A3:D9").Columns.AutoFit
Range("A3:D9").Rows.AutoFit

这段代码:

Range("A3:D9").AutoFit

不指定是否应调整列或行。它可能会同时调整两者,但语言的设计者决定抛出一个错误。

【讨论】:

  • 很好的解决方案,完美的答案,很好的描述
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
相关资源
最近更新 更多