【发布时间】:2023-04-09 18:02:01
【问题描述】:
我遇到了一些麻烦,需要一些帮助。我需要创建代码来根据单元格的值更改命名范围的值。有 4 个选项:A、B、C 和无。如果选择 A、B 或 C,我需要在命名范围中输入预设值,将范围的颜色更改为灰色,并锁定单元格。如果选择无,命名范围将变为黄色,用户将在命名范围中输入自己的值。以下是我正在尝试的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Application.EnableEvents = False
Application.ScreenUpdating = False
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Unprotect Password:="MyPass"
If ws.Range("L14") = "A" Then
ws.Range("NamedRange").Rows(1) = "Option 1"
ws.Range("NamedRange").Interior.ColorIndex = 15
ws.Range("NamedRange").Locked = True
ElseIf ws.Range("L14") = "B" Then
ws.Range("NamedRange").Rows(1) = "Option 2"
ws.Range("NamedRange").Interior.ColorIndex = 15
ws.Range("NamedRange").Locked = True
ElseIf ws.Range("L14") = "C" Then
ws.Range("NamedRange").Rows(1) = "Option 3"
ws.Range("NamedRange").Interior.ColorIndex = 15
ws.Range("NamedRange").Locked = True
Else 'user input own entries
ws.Range("NamedRange").ClearContents
ws.Range("NamedRange").Interior.ColorIndex = 6
ws.Range("NamedRange").Locked = False
End If
ws.Protect Password:="MyPass"
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
我遇到的问题是选择“无”。单元格变为黄色并解锁,但因为我正在使用工作表更改事件,所以我尝试输入的任何值都会自动清除。当使用工作表更改事件选择“无”时,是否有任何方法允许用户更改命名范围?
【问题讨论】:
-
为
Target的颜色添加一个检查,如果是黄色则绕过你的函数。也许在这里Else 'user input own entries -
@Nathan_Sav 谢谢!我想这是一个非常明显的修复,只是错过了它。我在最后的 else 中添加了一个 IF 语句,所以如果颜色为黄色,它只会跳过 clearcontents、颜色分配和解锁。它会在第一次更改 None 时起作用,但之后随时跳过。再次感谢!