如何根据以前的input禁用单元格

我正在尝试在Excel中创build一个高级电子表格,以满足真正需要被告知要做什么和不该做什么的人。 所以根据列AI中的select要禁用一些单元格如下(但只禁用同一行中的单元格):

Number- disable cells D, F, G Link - disable cells E, F, G Image - disable cells D, E 

任何帮助非常感谢,我真的不能在我的Excel / VBBA技能。

您可以locking单元格,以免它们被选中。

 Range("A2").Locked = True 

但是,这要求您locking工作表(带或不带密码)。

 WorkSheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True WorkSheets("Sheet1").EnableSelection = xlUnlockedCells 

所以当用户点击“主”单元格时,您只需切换哪些单元格被locking。

为了在用户select新的单元格时进行此更改,您需要挂钩select更改事件(将下面的代码放在您的工作表模块中)。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub 

目标是当前选定的单元格。 所以,现在您可以testing以查看当前选中的单元格,然后根据需要locking其他单元格。

所有这一切说,我会build议对此,而是使用UserForm。

编辑2 – 根据评论更新。

这是一个简单的实现

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Dim tRow As Integer tRow = Target.Row Worksheets("Sheet1").Unprotect Dim dLock, eLock, fLock, gLock As Boolean Range("D" & tRow & ":G" & tRow).Locked = False Select Case Range("b" & tRow).Value Case "Number" dLock = True fLock = True gLock = True Case "Link" eLock = True fLock = True gLock = True Case "Image" dLock = True eLock = True End Select Range("d" & tRow).Locked = dLock Range("e" & tRow).Locked = eLock Range("f" & tRow).Locked = fLock Range("g" & tRow).Locked = gLock Worksheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Worksheets("Sheet1").EnableSelection = xlUnlockedCells End If End Sub