使用函数 - VBA 自动调整从不同 sheet 引用的行

AutoFit on rows that are referenced from different sheet using function - VBA

我想对另一个 sheet 中引用的单元格进行自动调整,所以每当我在一个 sheet 上添加一些信息时,我的行高都会扩展,下面的代码使之成为可能:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Target.WrapText = True
Target.EntireRow.AutoFit

End Sub

但正如我所说,这只有在我在工作簿中的任何位置手动输入内容时才有可能,但是当我在另一个 sheet(同一工作簿)上有一些引用这些值的函数时呢?即使匹配正确,字段也不会扩展...

例如,我将此信息作为一个值 sheet(包装)作为一个值:

Column A
AAABBBCCCDDD
EEEFFFGGGHHH

并且在另一个 sheet 上使用此函数以引用它们时:

=IFNA(IF(ISBLANK(INDEX(INDEX(Table1[Systembezeichnung];MATCH(Ausdruck!$A;Table1[Nummer];0)):INDEX(Table1[Systembezeichnung];MATCH(Ausdruck!$A;Table1[Nummer];0)+9);ROW(4:4)));"";INDEX(INDEX(Table1[Systembezeichnung];MATCH(Ausdruck!$A;Table1[Nummer];0)):INDEX(Table1[Systembezeichnung];MATCH(Ausdruck!$A;Table1[Nummer];0)+9);ROW(4:4)));"")

它把所有东西都排成一排,但没有按我的意愿展开或包裹:

Column A
AAABBBCCCDDDEEEFFFGGGHHH

为了我提供的动态文档,它必须自动包装,不会丢失信息或某些信息丢失或“隐藏”。

您可以使用 Workbook_SheetCalculate 事件。一个简单的例子如下。

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    With Worksheets("Sheet2")
        .Range("D2:D5").WrapText = True
        .Range("D2:D5").EntireRow.AutoFit
    End With
End Sub

因此,如果您有任何公式在 sheet2 上设置 D2:D5 的范围,并且您何时将任何值更改为工作簿的任何 sheet,并且如果它将任何值更改为 D2:D5 那么该单元格行将自动适合。

Edit: For full sheet you can try below codes.

With Worksheets("Sheet2")
    .Cells.WrapText = True
    .Cells.EntireRow.AutoFit
End With

Microsoft reference here