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

Ehu*_*udz 6 excel vba cell

我想知道是否有一种方法可以防止单元格的文本与相邻单元格重叠,而无需调整单元格本身的大小或将单元格内容设置为换行。

sba*_*ers 6

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

  • 选择范围
  • 右键单击>“设置单元格格式”>“对齐”选项卡
  • 在文本对齐区域,从“水平”下拉菜单中选择“填充”

在 VBA 中,看起来像:

Sub AwayWithYouConfusingOverlap()
    Range("A1").HorizontalAlignment = xlFill
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 唯一的问题是,如果文本足够短,它会重复直到填满单元格。尽管如此,它足以满足我的需求 (2认同)

Ala*_*ain 3

除了您提到的两种方法(重新调整单元格大小并将其设置为换行)之外,唯一的方法是在相邻单元格中包含文本。[编辑:我忘记了另一种方法,正如 Siddharth Rout 指出的那样,如果将单元格格式设置为“缩小以适合”(在对齐>文本控制下),字体大小将自动缩小,以便内容适合单元格宽度。 ] 如果您只想在单元格边缘截断长文本,则仅当文本要流入的单元格具有自己的内容时,Excel 才会执行此操作。

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

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

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

如果您只想对本来会溢出的单元格执行此操作,那么您必须执行更复杂的操作。你不得不:

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