如果该单元格恰好是非连续范围的一部分,则通过 excel vba 更改该单元格的值

Changing the value of a cell via excel vba if that cell happens to be part of a non contiguous range

我有七个单元格 "N13"、"D17"、"H17"、"L17"、"P17"、"T17" 和 "X17" .那都是空的。我有几个形状将附加宏。我需要帮助编写的宏应该检查当前选定的单元格是否属于这七个单元格范围。如果它是七个单元格范围的一部分,那么附加到形状的宏将简单地在该单元格中放置一个数字。例如:我选择了单元格 L17,它处于活动状态,我单击正方形,它将单元格 L17 的值更改为 4。(形状的边数。)如果我选择了单元格 M17 并单击正方形shape 它不会将 4 添加到单元格中,它什么都不做。发生这种情况的工作表称为 "Main"。 我曾尝试过一组嵌套的 OR 语句,但这没有用,我想我需要做某种形式的相交,但我不确定如何做。

Sub Three_Side()
' Three_Side Macro

    Sheets("Main").Select
    If (ActiveCell.Row = 13 And ActiveCell.Column = 14) Or _
        (ActiveCell.Row = 17 And ActiveCell.Column = 4) Or _
        (ActiveCell.Row = 17 And ActiveCell.Column = 8) Or _
        (ActiveCell.Row = 17 And ActiveCell.Column = 12) Or _
        (ActiveCell.Row = 17 And ActiveCell.Column = 16) Or _
        (ActiveCell.Row = 17 And ActiveCell.Column = 20) Or _
        (ActiveCell.Row = 17 And ActiveCell.Column = 24) Then
        ActiveCell = 3
        Range("AD1") = Range("AD1") + 3
    End If

End Sub

Intersect 的方向是正确的。

Dim checkRng as Range
Set checkRng = Intersect(ActiveCell, Range("N13,D17,H17,L17,P17,T17,X17"))

If Not checkRng is Nothing Then
    ActiveCell.Value = 3
    Range("AD1").Value = Range("AD1").Value + 3
End If