【问题标题】:Conditional value entered in specific cell in a range, unlocks another specific cell in another range (VBA, Range Offset)在一个范围内的特定单元格中输入条件值,解锁另一个范围内的另一个特定单元格(VBA,范围偏移)
【发布时间】:2020-03-09 15:28:57
【问题描述】:

我对 VBA 非常陌生,但我会尽力赶上,阅读我能阅读的所有内容,并尽可能多地进行测试。经过几天的尝试,我根本无法弄清楚这一点,我请求帮助!

我特别需要的: 如果在单元格 U13 中输入值 9(并且只有 9),则单元格 AZ13 被解锁(没有其他输入值将解锁 AZ13)。或者,如果在单元格 U14 中输入值 9,则单元格 AZ14 被解锁,依此类推,直到大约 U300/AZ300。

我已经使用下面的代码在第一行 U13/AZ13 上成功实现了预期的结果。

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect "password"
    If Range("U13").Value <> 9 Then
        Range("AZ13").Locked = True
    ElseIf Range("U13").Value = 9 Then
        Range("AZ13").Locked = False
    End If
    ActiveSheet.Protect "password"
End Sub

我这辈子无法上班的部分是转移到下一行。我已经尝试了上述代码的几种变体以及大约 100 种其他代码,包括:

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect "password"
    If Range("U13:U200").Value <> 9 Then
        Range("U13:U200").Offset(0, 31).Select.Locked = True
    ElseIf Range("U13:U200").Value = 9 Then
        Range("U13:U200").Offset(0, 31).Select.Locked = False
    End If
    ActiveSheet.Protect "password"
End Sub

我已经用“.select.locked”以及“.locked”尝试了上述方法。 我只是在学习使用范围偏移,但确实尝试修改为仅在 (0,1) 上移动 1 个单元格,以防万一我计算了错误的单元格数量,但这也不起作用。这个特定的代码给了我一个运行时错误(类型不匹配); debug 指向这一行:

If Range("U13:U200").Value <> 9 Then

非常感谢任何在正确方向上的帮助!!!

【问题讨论】:

  • 您将需要循环范围,您将无法将值数组与单个值进行比较。
  • 您会收到类型不匹配错误,因为您无法将整个范围与9 进行比较。你需要遍历它。
  • 第二个例子中你到底想做什么?
  • 我只想获取第一个示例(适用于该特定行),对工作表中的所有其他行执行相同操作。我目前正在查找如何根据前两个 cmets 正确循环,因为这似乎是我的问题。
  • 你们谁能告诉我 - 我需要将循环添加到第一个示例(适用于一行的那个),还是第二个示例中缺少的东西?

标签: excel vba range offset


【解决方案1】:

如上所述,你需要循环。

类似这样的:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    ActiveSheet.Unprotect "password"
    For Each c In Me.Range("U13:U200").Cells
        c.Offset(0, 31).Locked = c.Value <> 9
    Next c
    ActiveSheet.Protect "password"
End Sub

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多