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

问题描述 投票:0回答:1

我有七个单元格“ N13”,“ D17”,“ H17”,“ L17”,“ P17”,“ T17”和“ X17”。那都是空的。我有几种形状,将附有宏。我需要帮助编写的宏应该检查一下当前选择的单元格是否属于该七个单元格范围。如果它是七个单元格范围的一部分,则附加到形状的宏将简单地在该单元格中放置一个数字。因此,例如:我选择了单元格L17,它处于活动状态,我单击正方形,它将单元格L17的值更改为4。(形状的边数。)如果我选择了单元格M17,然后单击正方形形状它不会将4加到单元格上,它什么也不做。发生这种情况的工作表称为“主”。我曾经尝试过一组嵌套的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
excel vba shapes
1个回答
0
投票

您在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
© www.soinside.com 2019 - 2024. All rights reserved.