VBA:列宽调整子导致Excel“撤消”故障

问题描述 投票:0回答:1

有人可以对以下问题发表评论吗? 我有一个子组件,它使用“自动调整”将列宽调整为文本宽度,但 J 列除外,它的固定宽度应为 80。但是,我发现子组件有两个问题:

  1. 此工作表上的“撤消”功能现在不可用。
  2. 滚动工作表变得慢得多,可能是因为单元格宽度不断更新。

我决定暂时关闭低音炮,因为这并不重要。但是,我很好奇是否有机会让它正常工作。

谢谢!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ws As Worksheet
    Dim col As Long
    Dim maxCol As Long

    ' Set worksheet
    Set ws = Me

    ' Determine maximum number of columns
    maxCol = ws.Cells(1, ws.Columns.count).End(xlToLeft).Column

    ' Adjust column width
    For col = 1 To maxCol
        If col <> 10 Then ' 10 entspricht der Spalte J
            ' Adjust width of current column
            ws.Columns(col).AutoFit
        Else
            ' Set width of column J to 80
            ws.Columns(10).ColumnWidth = 80
        End If
    Next col
End Sub
excel vba undo column-width
1个回答
0
投票

阅读以下文章,了解为什么运行 vba 代码后撤消功能不可用 Excel 撤消 vba

我也同意@Shrotter,你可能应该只在

WorkSheet_Change
事件上运行这个。你可以这样简化:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  
    If Target.Column = 10 Then
        Target.ColumnWidth = 80
    Else
        Target.EntireColumn.AutoFit
    End If
    
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.