阻止工作表在触发时跳转到页面顶部 Cells.Select 属性

Stop worksheet from jumping to top of page when firing Cells.Select property

这是默认的 ThisWorkbook 代码:

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

这是我的 FixWidthHeight 模块:

Sub FixWidthHeight()
    Cells.Select
    Selection.Columns.AutoFit
    Selection.Rows.AutoFit
    Application.Goto ActiveCell.EntireRow, True
End Sub

我希望我的代码按此特定顺序执行的操作:

  1. Cells.Select - 选择整个工作表中的所有单元格
  2. Selection.Columns.AutoFit - 自动调整所有列宽
  3. Selection.Rows.AutoFit - 自动调整所有行高
  4. Application.Goto ActiveCell.EntireRow, True - 将最后更新的行滚动到工作表顶部

这个代码的问题是它不会触发最后一个 属性 Application.Goto ActiveCell.EntireRow, True 因为 Cells.Select 属性 阻止它开火。我测试了代码,发现 Cells.Select 是罪魁祸首。当触发 Cells.Select 属性 时,它会自动跳转到工作表顶部的 第一行 而不是最后 active/updated 行。就好像 Cells.Select 抵消了 Application.Goto ActiveCell.EntireRow,True 而这不是我想要的。所以我想知道是否有人可以帮助我修复这段代码以获得我想要的指定结果。谢谢

您可以先在 UsedRange.ColumnsUsedRange.Rowsavoid Selecting 上调用 AutoFit

With ActiveSheet.UsedRange
    .Columns.AutoFit
    .Rows.AutoFit
End With

然后 ActiveCell 保持不变,Application.Goto ActiveCell.EntireRow, True 将按需要工作。