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

使用VBA防止Excel中的单元格重叠,excel,vba,cell,Excel,Vba,Cell,我想知道是否有一种方法可以防止单元格文本重叠到相邻单元格中,而不必调整单元格本身的大小,或将单元格内容设置为换行。除了您提到的两种方法(调整单元格大小并将其设置为换行)之外,唯一的方法是在相邻单元格中添加文本。[编辑:正如Siddharth Rout指出的那样,我忘记了另一种方法,如果您将单元格格式化为“收缩以适应”(在对齐>文本控制下),字体大小将自动收缩,使内容适合单元格宽度。]如果您只想在单元格边缘剪掉长文本,只有当文本将流入的单元格有自己的内容时,Excel才会这样做 自动执行此操作的最

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

除了您提到的两种方法(调整单元格大小并将其设置为换行)之外,唯一的方法是在相邻单元格中添加文本。[编辑:正如Siddharth Rout指出的那样,我忘记了另一种方法,如果您将单元格格式化为“收缩以适应”(在对齐>文本控制下),字体大小将自动收缩,使内容适合单元格宽度。]如果您只想在单元格边缘剪掉长文本,只有当文本将流入的单元格有自己的内容时,Excel才会这样做

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

  • 使用内容在所有单元格上循环
  • 如果水平相邻的单元格尚未包含内容,请在这些单元格中放置空白
  • 请注意,您应该对内容溢出的单元格左侧和右侧的两个单元格执行此操作,或者检查文本是左对齐还是右对齐,以帮助确定需要填充两个水平相邻单元格中的哪一个

    如果你只想对那些本来会溢出的细胞做这个,那么你必须做一些更复杂的事情。你必须:

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

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

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

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

    我最近发现了一种干净的方法,可以防止相邻单元格中出现重叠文本:

    • 选择范围
    • 右键单击>设置单元格格式>对齐>复选框换行
    结果可能看起来很难看,因为不同的线可能以不同的高度显示。 但是,仍然可以通过强制所有线具有相同高度来修复所有线:

    • 选择范围
    • 右键单击最左边的列(其中包含行号)>行高度>输入所需值
    就这样

    我希望我的法语不会模糊我的英语,至少不会太多


    此解决方案的优点是还可以进行打印(如果您希望防止溢出到其他空白页中),因为您不需要其他列

    在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
    

    我在单元格中的重叠单元格旁边放了一个空格。它不再重叠。我将该单元格复制并粘贴到我的电子表格中

    我只需在我要停止重叠的单元格右侧插入一列,然后以较小的点大小输入一个字符。然后将其一直复制到电子表格中,并将列的宽度缩小到0.5,使其几乎不可见。这样,您就不会影响公式,并且使电子表格更易于阅读。

    我通过以下步骤解决了我的问题:

  • 选择范围(对于我的情况,我通过按ctrl+A选择了所有区域)
  • 右键单击>“设置单元格格式”
  • 转到“对齐”选项卡
  • 在“文本对齐”区域中,从“水平”下拉菜单中选择“对齐”选项
  • 然后按ok
  • 在此之前:

    那么是:

    是否将
    缩小以适合
    选项?唯一的问题是,如果文本足够短,它将重复,直到填充完单元格。不过,它很好地满足了我的需要