我正在使用Excel 2007.我想要以下行为:
这些行为需要限制在特定的行中,因此单元格B3需要不受单元格A2中的值的影响。这些行为需要在第2行到第501行中起作用。
我想这需要一些VBA
答案 0 :(得分:0)
你可以在这里坚持2种方法我想,要么保护工作表并根据你陈述的条件锁定那些特定的单元格,要么为workheet_change事件编写例程。
我认为第一个是相当狡猾的,所以我会选择后者。
或许这样的事情?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target.Value = vbNullString Then Exit Sub 'to prevent endless loops
If Cells(Target.Row, 1) = "Create" Or Cells(Target.Row, 1) = vbNullString Then
Target.Value = vbNullString
End If
End If
End Sub
工作表中的所有这些。
一些解释: 每当工作表发生更改(因此名称)时,Excel都会调用此子程序。因此,如果您在任何单元格中键入值,则在离开单元格时会调用该子句(按Enter键或单击另一个单元格等)。
sub中的Target
参数是刚刚更改的范围。
因此,如果您在单元格B1中输入33
,则Target
将为Range("B1")
。因此Target.Column
是刚更改的单元格的列(在本例中为2),Target.Row
是行(1),Target.Value
保存您刚刚输入的值(33) 。所以Cells(Target.Row, 1)
(在这种情况下)是单元格A1。
此子句适用于工作表中的所有行,但我确信您可以对其进行调整以检查它所在的行。
编辑:添加了一些解释
答案 1 :(得分:0)
最简单的解决方案(但不是失败证明)是通过转到数据,数据验证和自定义来为单元创建数据验证。在公式输入中,您可以输入
=A2<>"Create"
如果您不希望B2可编辑,如果A2包含“创建”。然后你可以突出显示A2和B2并将其向下拖动到第501行。这是我偶然发现的最快的解决方案。希望这有帮助