• 締切済み

Excel(VBA)

Excel(VBA)で、指定範囲内にオートシェイプがあるかを判定し、あれば○,なければ×を表示する事は可能でしょうか?

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

Shapeには、TopLeftCellプロパティ、BottomRightCellプロパティがあります。 下記マクロは、図形の左上角(TopLeftCell)が、セル範囲B3:E10にかかっている図形があれば、○をメッセージします。 セル範囲内に、図形全体が収まっているかどうかは、BottomRightCellプロパティも併用すれば判定できます。 Sub test1() Dim shp As Shape For Each shp In ActiveSheet.Shapes MsgBox shp.TopLeftCell.Address & vbCrLf & shp.BottomRightCell.Address If Not Intersect(shp.TopLeftCell, Range("B3:E10")) Is Nothing Then MsgBox "○" Else MsgBox "×" End If Next End Sub

miniture_min
質問者

お礼

回答ありがとうございます。 回答が遅れまして申し訳ございません。 私の方でもやってみましたが、微妙に私のイメージとちがいます。 しかし、良いヒントになりました。ありがとうございました。

  • tocci_pc
  • ベストアンサー率14% (19/130)
回答No.1

まず、オートシェイプを選択するのは ActiveSheet.Shapes("TextBox1").Select です。 あと、セルの座標の取得方法があって、 セルR1C1のXY座標の表示が x = Cells(1,1).Left y = Cells(1,1).Top です。 これでヒントになると思いますが。

関連するQ&A