我有使用宏实现的解决方案,但是如果可以,我想将其删除。所以这里的问题Excel - 如何尽可能不使用宏来锁定单元格
我有一个单元格使用验证规则实施下拉列表。我希望该单元格是只读的,具体取决于同一工作表中第二个单元格中的值。
我试图锁定使用另一个验证,但它不允许我。
任何想法?
我有使用宏实现的解决方案,但是如果可以,我想将其删除。所以这里的问题Excel - 如何尽可能不使用宏来锁定单元格
我有一个单元格使用验证规则实施下拉列表。我希望该单元格是只读的,具体取决于同一工作表中第二个单元格中的值。
我试图锁定使用另一个验证,但它不允许我。
任何想法?
我假设数据验证是细胞A2
和正在检查的值是在细胞A1
当您更改单元格A1
的价值“等等等等”的代码将运行,然后锁定单元格A2
。请在实际运行之前花点时间阅读代码中的注释。
该代码必须粘贴在工作表代码区域中。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
Dim mypassword As String, StringToCheck As String
On Error GoTo Whoa
'~~> Change the password here to protect/unprotect the sheet
mypassword = "password"
'~~> Change it to the relevant string with which you want to compare
StringToCheck = "Blah Blah"
If Not Intersect(Target, Range("A1")) Is Nothing Then
'~~> Check for the cell value
If Target.Value = StringToCheck Then
'~~> Un-Protect the sheet
ActiveSheet.Unprotect mypassword
'~~> Lock the cell
Range("A2").Locked = True
'~~> Re-Protect the sheet
ActiveSheet.Protect mypassword
End If
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
感谢快速回复,但我想我已经在使用宏(VBA)我想删除,以与工作的.xlsx和平板电脑 – user1598124
工作,这样你就不会解决方案想要一个VBA解决方案。你在说什么? –
是的,这是正确的 – user1598124
您可以防止只使用Data Validation
编辑输入新数据的用户:使用公式列表
由于Head of Catering的评论,这是值得记住的是,你可以用公式与数据验证/列表。
见他的回答另一个线程来看到这个动作:https://stackoverflow.com/a/11902463/138938
原帖
演练对于Excel 2007:
=IF(A1="",FALSE,TRUE)
因此,如果A1仍是空的
我已经验证规则在单元格上创建下拉列表。它不允许我第二验证添加到同一个小区 – user1598124
@ user1598124:您可以使用和'或'和你的验证规则公式中'和'声明,以满足您的2个验证要求? –
@ user1598124:我不知道添加第二个验证的任何标准方式,但没有找到没有数据验证的下拉解决方案。最后,我看不到VBA – JMax
得到它的工作,你无法进入细胞中的值,但你可以只有实际设置值,当它出现到下拉菜单
我用名称管理器将名称test
设置为值=IF(Sheet1!$A$1=1,"",Sheet1!$E$1:$E$5)
这意味着如果A1
是1,我什么也没得到,而且如果A1
是什么事我得到E1:E5
然后我设置的数据验证,以List
,与源=test
你只能设定值时测试返回一个列表
当我这样做,当A1是1,我在验证下拉列表中得到一个空列表,我无法改变的值。如果A1不是1,我得到E1:E5的列表,并且我可以更改值
+1有趣的方法,但我测试了它,它肯定不会锁定单元格:当A1为1时,您不会获得下拉菜单,但实际上可以输入任何值,并且验证不会抱怨。 –
这与餐饮解决方案的主管部门相似(请参阅他对我的回答的评论),但他的解决方案更直接并且可能有效。不错的建议 – JMax
这是一个旧帖子,但我找到了一个解决方案,它会抛出一个错误,并防止窥视进入任何他们想要的使用Excel 2010)而不使用VBA。
在用户界面(SHEET1),我有以下字段:
我需要什么样的:
当 “是” 时,我可以选择或场2 1类型%-100%,这也是 “可用”。
当“否”时,字段2变为“变灰”和用户不再能够输入一些随机值。
我怎么做的:
对于现场2,我用了一个条件格式(= 'SHEET2' 的公式$ I $ 2 = “否”!),并将其设置为灰色的字体和背景。
在SHEET2中,我将字段(列I)设置为等于来自SHEET1的字段1,所以它可以是“是”或“否”,具体取决于来自SHEET1的字段1中选择的内容。然后,我简单地在其下面添加了99个其他行,将它们设置为与其上方的单元格相等。所以我有100行“是”或“否”。
在SHEET2,我有另一列(R)与所述第一小区值:= IF(I2 = “是”,0.01,1)
紧下方,我有:= IF( I3 =“是”,R2 + 0.01,1)
然后我预先填写下面的行中的值,直到我有100%的1%(当选择“是”时)并在SHEET1的字段上设置验证2基于这些值。这允许我手动输入%值,或者从下拉值1%到100%中进行选择。
结果:
当我选择“否”,它呈灰色场2,并留下什么,因为它不能没有VBA改变显示的数值是前%。例如,它可能仍显示30%。但是,如果用户看到它变灰并尝试在里面输入一些值,比如31%,它会因为我的数据验证了这一领域的“错误警报”选项卡上的设置错误抛出异常。如果他们选择下拉菜单,他们只会看到100个100%的选项。这是唯一的缺点,但我想我可以将所有内容都删除,除了1个显示100%的单个字段。
当我选择“是”,它ungrays场2,我可以自由地从1-100之间的doprdown列表值再次选择。
我需要什么样的价值观做:
不管它是我需要完成,我设置了一些公式,我以100%使用,如果“否”被选中,场2的%如果选择“是”。
你怎么样试图阻止用户进入价值?它应该使用公式 – JMax
更详细的这个问题,将真正帮助 – whytheq