[[20060621092444]] 『マクロでオートシェイプが上にかかっているかを判』(立花) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでオートシェイプが上にかかっているかを判断できる?』(立花)
 マクロで、あるセル(例えば セル B15 )の上に
 オートシェイプがあるかないかを調べるマクロってありますでしょうか。


 四角のオートシェイプであれば座標などから計算するとわかると思います。
 他の形で被っているかどうかというのは厳しいですね。
 何の為にそういうことをしたいのか書いてもらえれば、代替案が出てくるかもしれませんよ。
 (やっちん)

 セルに色をつけていて
 マクロの中で、指定したシートの中で黄色にぬりつぶされたセルを検索して、
 セル色が黄色だったら、セルの値をみて処理しているものがあります。
 ただし、一部そのセルに対して、セルの大きさのちょうど半分くらいの大きさの
 □のオートシェイプをかぶせているものがあり、そのセルは
 別の処理をさせたいという風に考えています。

 詳しく書くとこんな感じです。
 セル色が黄色のセル → 処理Aをやりたい。
 セル色がピンクのセル → 処理Bをやりたい。
 セル色が黄色で、セルの上に半分くらいの大きさでピンクのオートシェイプをかぶせてあるセル
  → 処理AもBもやりたい

(立花)


 単純に処理AもBもする場合は、黄色とピンク以外の色をあてるのはダメですか?

 サンプルです。
 名前がRectangleから始まるオートシェイプの左上が重なっているセルのアドレスを表示します。
 Sub Test()
    Dim sh As Shape
    For Each sh In ActiveSheet.Shapes
        If Left(sh.Name, 9) = "Rectangle" Then
            MsgBox sh.TopLeftCell.Address(0, 0)
        End If
    Next
 End Sub
 セルからではなくてオートシェイプからの処理になるので、処理にスピードを求めたり
 処理Aと処理Bに何らかの関係があるのであれば多少の工夫は必要でしょう。
 (やっちん)

 (やっちん)さんありがとうございました。
 既にオートシェイプの形で作られてしまっていたので、
 セルを塗りなおしたりするのが大変だったので、きいてみました。
 でもセルの色を変えた方が複雑にならなそうなので
 なおしてみます。
 ありがとうございました。(立花)

 マクロが組めるのであれば
 オートシェイプの名前に規則性があるか、他のオートシェイプやボタンが無ければ、
 先ほどのサンプルを修正して、その色付け作業もマクロでできますね。
 (やっちん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.