【问题标题】:Toggling the "highlighted bordering" around a user selected cell在用户选择的单元格周围切换“突出显示的边框”
【发布时间】:2023-03-26 21:51:02
【问题描述】:

我有一些代码可以为用户生成一个简单的 Excel 模板。该代码锁定并保护不在“A2:A”中的所有单元格,并使它们无法选择。但是,在此代码运行后,用户不再获得选定单元格周围的突出显示边框。有什么方法可以确保在代码中启用此功能?

With ws1
    .Protect UserInterfaceOnly:=True
    .EnableSelection = xlUnlockedCells
    With .Cells
        .Locked = True
        .Borders.Color = vbWhite
    End With

    With .Columns("A")
        .Locked = False
        .Borders.Color = vbBlack
        .ColumnWidth = 20
    End With

    With .Range("A1")
        .Value = "MPID"
        .Interior.Color = 14277081
        .HorizontalAlignment = xlCenter
        .Locked = True
    End With
End With

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用限制性 Excel 工作表时,您必须以相反的逻辑处理它。默认情况下,所有内容都将受到限制,一旦您单击或激活限制工作表的宏。因此,您首先必须先选择单元格或范围上的“锁定”值并将其更改为 false。然后,您应该将其他所有内容设置为您希望的样子,最后一步是主动限制工作表。这应该会给你你想要的:

    Sub Test()
    
        Dim ws1 As Worksheet
        Set ws1 = Sheets("Sheet1")
    
        'unprotect the column that you don't want to restrict
        Columns("A:A").Select
        Selection.Locked = False
        Selection.FormulaHidden = False
    
        With ws1.Range("A1")
            .Value = "MPID"
            .Interior.Color = 14277081
            .HorizontalAlignment = xlCenter
        End With
    
        With ws1.Columns("A")
            .Borders.Color = vbBlack
            .ColumnWidth = 20
        End With
    
        ws1.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        ws1.EnableSelection = xlUnlockedCells
    
        Set ws1 = Nothing
    
    End Sub
    

    【讨论】:

    • 谢谢!那么是不是 UserInterfaceOnly 语句禁用了用户选择突出显示?
    • 老实说,我还没有检查过,但这就是事情......实验!把那个语句放在里面,运行它,看看会发生什么。这会给你这个问题的答案。
    • 似乎没有什么不同。我想这只是格式化、锁定和保护的顺序。仍然为它挠头。但它有效,我非常感激。再次感谢!
    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多