已更新
我需要根据表格中问题的答案显示或隐藏工作表。如果答案为“是”,则显示表格。如果“否”,则隐藏它。那部分很容易......
现在,这个问题可能会在工作表上多次出现。如果对于任何问题,问题的答案为“是”,则显示表格;如果所有答案都是“否”,则隐藏表格。假设问题和答案总是位于同一个地方,那也很容易......
我丢失的地方是,问题和答案单元格几乎可以在工作表中的任何位置,也可能无数次发生(可能永远不会超过10 ......但它可能)。
所以我需要的是一个找到问题的代码OFFSETS(0,1),然后触发宏,如果它等于target.address。我可以第一次在工作表中出现问题,但是如果我进一步回答这个问题,我就无法触发宏。
我现在就在这里:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Yes" Then
If Target.Offset(0, -3).Value = "Additional Collateral?" Then
Coll
Else
Exit Sub
End If
ElseIf Target.Value = "No" Then
If Target.Offset(0, -3).Value = "Additional Collateral?" Then
Coll
Else
Exit Sub
End If
Else
Exit Sub
End If
End Sub
**
Sub Coll()
If ActiveCell.Value = "Yes" Then
Sheets("Additional Collateral").Visible = True
Exit Sub
Else
Sheets("Additional Collateral").Visible = xlVeryHidden
End If
End Sub
此代码执行所有操作,但如果任何“附加抵押品”的答案为“是”,则除外。问题我需要让工作表可见。此代码仅基于最新答案...
答案 0 :(得分:1)
以下代码适用于我的目的。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Yes" Then
If Target.Offset(0, -3).Value = "Additional Collateral?" Then
Coll
Else
Exit Sub
End If
ElseIf Target.Value = "No" Then
If Target.Offset(0, -3).Value = "Additional Collateral?" Then
Coll
Else
Exit Sub
End If
Else
Exit Sub
End If
End Sub
**
Sub Coll()
Dim r As Range, cell As Range
Set r = Range("$X$1:X$1000")
For Each cell In r
If cell.Value = "Yes" Then
Sheets("Additional Collateral").Visible = True
Exit Sub
Else
Sheets("Additional Collateral").Visible = xlVeryHidden
End If
Next
End Sub