電子書籍の厳選無料作品が豊富!

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

A 回答 (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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

しかし、良いヒントになりました。ありがとうございました。

お礼日時:2009/10/12 00:54

まず、オートシェイプを選択するのは


ActiveSheet.Shapes("TextBox1").Select です。

あと、セルの座標の取得方法があって、
セルR1C1のXY座標の表示が
x = Cells(1,1).Left
y = Cells(1,1).Top です。

これでヒントになると思いますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A