首页 > 解决方案 > 检查对象是否在单元格范围内

问题描述

我正在 excel 中构建交互式计算。用户将移动图像并按下计算按钮。如果图像在某个单元格范围内,则范围(“c2”)应识别对象在哪个范围内(只有 4 个区域,它们是年季度正方形,Q1、Q2、Q3 和 Q4。Q1 在 e1 内:j14)在此处输入图像描述

我已经能够通过 VBA 移动对象,但我无法检查它在哪个范围内:

ActiveSheet.Shapes("Grupo 24").Top = ActiveSheet.Range("B5").Offset(0, 4).Top
ActiveSheet.Shapes("Grupo 24").Left = ActiveSheet.Range("B5").Offset(3, 4).Left

上面的 VBA 会将对象移动到单元格(“E5”)右侧的位置(上图),但我无法检查图像是否在(“E1:J14”)内。

当我尝试检查时,作为测试,我收到错误消息:错误 13 不兼容类型:

If ActiveSheet.Shapes("Grupo 24").Top = ActiveSheet.Range("e1:j14") Then
 MsgBox ("Within")
 Else
 MsgBox ("Outside")

 End If

有任何想法吗?

标签: excelvba

解决方案


假设我们已经将Names quad1quad2quad3quad4 分配给单元块:

在此处输入图像描述

我们确定哪个单元格与 关联,Shape然后遍历块以查找单元格在哪个块中:

Sub quadFinder()
    Dim s As Shape, r As Range, i As Long

    Set s = ActiveSheet.Shapes("Grupo 24")
    Set r = s.TopLeftCell

    For i = 1 To 4
        If Not Intersect(r, Range("quad" & i)) Is Nothing Then
            MsgBox quad & i
            Exit Sub
        End If
    Next i

    MsgBox "not in a quad"
End Sub

推荐阅读