首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据另一个单元VBA的值锁定/解锁一个单元

根据另一个单元VBA的值锁定/解锁一个单元
EN

Stack Overflow用户
提问于 2018-05-25 19:19:35
回答 1查看 1.7K关注 0票数 0

我在这个网站和其他几个网站上读了很多关于这个问题的文章,但是还没有找到一个可行的解决方案。

我有一个为工作而构建的简单计算器,如果在D7中输入了除0以外的数值,则需要锁定D6,如果值为零,则解锁。如果在D6中输入了0以外的值,也可以锁定D7,如果值为零,则解锁。这是一种circular...however,我不希望有人能够在一个单元格中输入一个值,如果另一个单元格中有一个值。

此外,除了D4、D5、D6和D7之外,工作表中的所有单元总是被锁定。D4 & D5将永远被解锁。

下面是我目前对这一工作的尝试。

代码

代码语言:javascript
运行
复制
Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("D6").Value <> 0 Then
ActiveSheet.Unprotect ""
        Range("D7").Locked = True
    ElseIf Range("D6").Value = 0 Then
        Range("D7").Locked = False
ActiveSheet.Protect ""
    End If

    If Range("D7").Value <> 0 Then
ActiveSheet.Unprotect ""
        Range("D6").Locked = True
    ElseIf Range("D7").Value = 0 Then
        Range("D6").Locked = False
ActiveSheet.Protect ""
    End If
End Sub

代码

问题是,在D6中输入值后,输入0时会出现错误,而在D7中输入值时,当D6为0时,通常只会得到一个错误。

无法设置Range类的锁定属性。

EN

回答 1

Stack Overflow用户

发布于 2018-05-25 19:58:41

也许你想要这个

代码语言:javascript
运行
复制
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect ""
    If Range("D6").Value <> 0 Then
        Range("D7").Locked = True
    ElseIf Range("D6").Value = 0 Then
        Range("D7").Locked = False
    End If

    If Range("D7").Value <> 0 Then
        Range("D6").Locked = True
    ElseIf Range("D7").Value = 0 Then
        Range("D6").Locked = False
    End If
    ActiveSheet.Protect ""
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50535610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档