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

10

我有一个空白的Excel表格模板,我会从剪贴板(来源于网站)复制数据到其中。

使用VBA是否有一种方法在数据(文本)粘贴后自动调整每列的宽度以适应其内容?

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


1
可以的。尝试录制一个宏来进行操作,这将为您提供一个示例。 - Gareth
谢谢。我也刚刚想到了。 :) 我该如何触发宏,以便在粘贴数据后运行? - user2571510
3个回答

27

你可以使用AutoFit来完成:

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

谢谢!是的,我也刚看到了。 :) 我该如何触发宏以便在粘贴数据后运行? - user2571510
没问题,但我的意思是,是否有一种方法可以在粘贴后自动运行宏,例如使用onchange或onpaste事件? - user2571510
1
@user2571510 你可以创建一个按钮,每次按下按钮时宏都会启动。这里有一个例子:http://www.mrexcel.com/tip068.shtml 这符合你的需求吗? :) - InformatikBabo
谢谢!我知道如何添加一个按钮,但是我正在寻找一些东西,在表格内容更改后自动启动宏,这是在我粘贴数据之后发生的。 - user2571510
1
没关系,我想通了 - 这可以通过Worksheet_Change事件完成。 - user2571510
之后,您可能想要使用ActiveSheet.Range("A1").Select取消选择该区域。 - Dave

14

您可以执行以下操作:

Columns("A").Autofit

4
比起被接受的答案更好,因为它不涉及使用(会降低性能)Select。 - D Schlachter

0

你可以使用工作表更改事件来完成,但如果在粘贴后任何方式更改了工作表,它会再次运行。除非你想隐藏列以便关注数据的子集,否则不是问题,因为它们将不断自适应。

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


欢迎来到SO @Stephany。您提出了一个不错的方法,如果您能用可行的示例扩展答案,将更有帮助。 - U3.1415926

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接