我可能在这里的方式,但我已经开始对一些代码,它是不工作(它抛出一个错误)。
实际上,我有一个表(Table18),其中有一列用于组1,一列用于组2。在任何给定行上,如果组1(rng)中有数据,我不希望用户能够向组2(rng2)中输入数据,反之亦然。
它必须仅用于选定的行,无论可能有多少行。
任何帮助都将不胜感激。
Sub CheckGroupIsPopulated()
' Description
Dim tbl As ListObject
Dim rng As Range, rng2 As Range
Set tbl = ActiveSheet.ListObjects("Table18")
'Table name
Set rng = tbl.ListColumns(2).DataBodyRange
'It should check if there is a value in the adjacent cell here
Set rng2 = tbl.ListColumns(3).DataBodyRange
'The code should execute if a user selects a cell in this range
If ActiveCell = rng2 Then
If rng.Cells.Value <> "" Then
MsgBox "Unable to enter data if text is containted in Defined Entry"
ActiveCell.Offset(0, -2).Select
Else
End If
Else
End If
End Sub
1条答案
按热度按时间kb5ga3dv1#
您可以为此使用数据验证,而根本不使用VBA。
选择你想要有条件保护的列,进入数据--〉数据验证,然后从下拉菜单中选择“自定义”。
现在,您可以输入一个公式,以确定是否允许用户在受保护的单元格中输入数据。如果公式返回
TRUE
,则允许输入,否则将根据您在“数据验证”表单的“错误警报”选项卡中输入的内容显示警告或错误。在下面的示例中,如果在第一列中输入了“Y”,则用户将无法在该行的其他列中输入任何内容,但您可以根据自己的喜好进行调整。