VBA Excel工作表更改自动调整行

VBA Excel工作表更改自动调整行,excel,vba,Excel,Vba,我在一个标准模块中有这段代码,它运行良好: Public Sub AutofitRows() ThisWorkbook.Worksheets("Data").Cells.EntireRow.AutoFit End Sub 然后,我在数据工作表模块中有以下代码,由于某些原因,该模块无法自动拟合所有行: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$3" Then Call Autofit

我在一个标准模块中有这段代码,它运行良好:

Public Sub AutofitRows()
ThisWorkbook.Worksheets("Data").Cells.EntireRow.AutoFit
End Sub
然后,我在数据工作表模块中有以下代码,由于某些原因,该模块无法自动拟合所有行:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$B$3" Then

Call AutofitRows

End If

End Sub
有人能解释一下如何纠正这个问题吗

谢谢。

请尝试以下代码:

Public Sub AutofitRows()
    Dim rng As Range
    Set rng = ThisWorkbook.Worksheets("Data").Rows("3:3")
    rng.AutoFit
End Sub
假设下面的代码驻留在工作表(“数据”)上。当单元格B3中的值发生变化时,也将调用该过程

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$3" Then
        Call AutofitRows
    End If
End Sub

您收到了什么错误消息?如果这是一个excel Autofit行为问题而不是一个错误,请向我们展示一个Autofit似乎未正确应用的数据行示例,以供回答。没有错误消息-它无法自动调整任何行,请向我们显示wome数据,以便我们可以尝试。看起来您做了正确的事情,只是最好使用
此工作簿。工作表(“数据”)。使用Drange
仅更改已使用的行。您试图自动调整的是行高,而不是列宽?@grahamj42谢谢,修正。我想自动调整的是行高。我希望列宽保持不变,行高改变。这可能是相关的:我想自动调整的其他单元格(在其他行上)是另一个工作表的查找。ThisWorkbook.Worksheets(“anotherSheet”).Range(“3:3”).EntireRow.AutoFit您确定事件“更改”会触发吗?@KazJaw如何检查?谢谢