Excel / VBA:粘贴数据后自动调整列宽

Posted

技术标签:

【中文标题】Excel / VBA:粘贴数据后自动调整列宽【英文标题】:Excel / VBA: auto-adjust column width after pasting data 【发布时间】:2014-07-26 08:42:35 【问题描述】:

我有一个保存为模板的空白 Excel 表格,我将剪贴板中的数据(来自网站)复制到该模板中。

在粘贴数据(文本)后,有没有办法使用 VBA 自动调整每列的宽度?

编辑:我粘贴的数据将始终从 A1 开始插入,并且始终填充相同数量的列。

【问题讨论】:

是的,你可以。尝试在录制宏的同时录制宏,这将为您提供示例。 谢谢。刚刚也想通了。 :) 如何触发宏以便在我粘贴数据后运行? 【参考方案1】:

您可以使用AutoFit

 Columns("A:B").EntireColumn.AutoFit

【讨论】:

谢谢!是的,这也是我刚刚看到的。 :) 如何触发宏以便在我粘贴数据后运行? 是的,没问题,但我的意思是,有没有办法在粘贴后使用 onchange 或 onpaste 事件之类的东西自动运行宏? @user2571510 你可以制作一个按钮,如果你按下按钮,宏就会启动。这是一个示例:mrexcel.com/tip068.shtml 这就是您需要的吗? :) 谢谢!我知道如何添加一个按钮,但我正在寻找在表格内容更改时自动启动宏的东西,这是在我粘贴数据之后。 没关系。我想通了 - 这可以通过 Worksheet_Change 事件来完成。【参考方案2】:

您可以执行以下操作:

Columns("A").Autofit

【讨论】:

比接受的答案更好,因为它不涉及使用(性能扼杀)选择【参考方案3】:

您可以使用工作表更改事件来执行此操作,但如果您的工作表在粘贴后以任何方式更改,它会再次运行。除非您尝试隐藏列以专注于数据子集,否则这不是问题,因为它们会不断自动调整。

我建议使用按钮粘贴数据,并将列宽设置作为粘贴命令的一部分。

【讨论】:

欢迎来到 SO @Stephany。你提出了一个好的方法,如果你用一个可行的例子来扩展你的答案,将会对提问者更有帮助。

以上是关于Excel / VBA:粘贴数据后自动调整列宽的主要内容,如果未能解决你的问题,请参考以下文章

怎样根据内容自动调整excel表格的行高列宽?

Excel表怎么让单元格自动调整宽度?

如何在文本输入期间在 Excel 中自动调整列宽

excel怎么设置自动换行和自动列宽

excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值

VBA选择工作表中的所有列并自动调整Excel 2010中的所有列宽度