使用VBA防止Excel中的单元格重叠

我想知道是否有一种方法可以防止单元格的文本重叠到相邻的单元格中,而不必调整单元格的大小,或者设置单元格的内容来包装。

除了您提到的两种方法(重新调整单元格大小并设置它的大小)之外,唯一的方法是在相邻单元格中添加文本。 Siddharth Rout指出,如果将单元格设置为“缩小到合适”(在alignment>文本控制下),字体大小将自动缩小,以使内容适合单元格宽度。 ]如果您只想在单元格的边缘切断长文本,则只有在文本以其他方式stream入的单元格具有自己的内容的情况下,Excel才会执行此操作。

自动执行此操作的最快方法是:

  1. 循环所有包含内容的单元格。
  2. 如果他们还没有内容,请在水平相邻的单元格中放置一个空格。

请注意,您应该对包含溢出内容的单元格的左侧和右侧的单元格执行此操作,或者检查文本是左alignment还是右alignment,以帮助确定需要填充两个水平相邻单元格中的哪一个。

如果你只想为那些本来会溢出的单元做这件事,那么你必须做一些更复杂的事情。 你不得不:

  1. 循环所有包含内容的单元格。
  2. 检查与当前单元格相邻的单元格是否为空白。 如果没有,你可以跳过这个单元格,然后转到下一个单元格。
  3. 将当前单元格的内容复制到空白列中的单元格(最好在新的临时表单上)。
  4. 告诉你的临时列自动resize(找出所需的单元格宽度)。
  5. 如果临时列的自动大小宽度大于源列的宽度,则单元格内容将溢出 – 因此您需要在相邻单元格中放置空格。

早上好。 有一种方法可以干净地做到这一点:

  • select范围
  • 右键单击>“格式化单元格”>“alignment”选项卡
  • 在文本alignment区域,从“水平”下拉菜单中select“填充”

在VBA中,看起来像这样:

 Sub AwayWithYouConfusingOverlap() Range("A1").HorizontalAlignment = xlFill End Sub 

我最近发现了一个干净的方法,以防止出现连续单元格的文本重叠:

  • select范围
  • 右键单击>格式单元格>alignment>checkbox换行

结果可能看起来很丑,因为不同的行可能会显示不同的高度。 但是,仍然有可能通过强制所有行具有相同的高度来解决所有问题:

  • select范围
  • 右键单击列名(包含行号)>行高>input所需的值。

而已 …

我希望法国人不要模糊我的英文,至less不要太多。


这个解决scheme的优点是也可以打印(如果你想防止溢出到额外的空白页),因为你不需要额外的列。

相同的程序可以在VBA中完成:

 With Range("A1:H100") .WrapText = True ' enable wrapping, will autoformat height .rows.RowHeight = 12.75 ' set back to default height, overflow is removed End With