• 締切済み

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

  • セル範囲と図形を指定してVBAで削除するには?

    エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。 オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、 VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか? (A1:G20)の範囲にあるオートシェイプは全体がこのセル範囲に入っています。 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他のVBAを使用しているので、 VBAで削除が出来ればと思います。 いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して 削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。 よろしくお願いいたします。

  • excel VBA オートシェイプのテキスト段落

    おはようございます。 【オートシェイプ内のテキスト行間を指定するプロパティ】 オートシェイプ内のテキスト行間を指定するプロパティはありますでしょうか? excel 2007で オートシェイプにテキストをいれた場合、 右クリックすると「段落」という項目がでてきて、 オートシェイプ内のテキストの行間を指定できたのですが、 オートシェイプ内のテキストの行間をVBAで指定することはできるのでしょか? (マクロを登録してもなにも記述されていないので、困っています。) 最終的にはアクティブブックの全シートのオートシェイプの行間を変更する VBAにしたいと思っています。 参考URL等あれば教えていただけませんでしょうか? よろしくお願いいたします。

  • 特定のオートシェイプだけ削除するVBA

    エクセルで一枚のシートに複数のオートシェイプを使用したものがあります。 オートシェイプを使用しているセルの範囲は (A1:L22)と(M1:U22)の二箇所なのですが、 VBAで(A1:L22)の範囲にあるオートシェイプのみ削除する事は可能でしょうか? (A1:L22)内のオートシェイプは作業内容により毎回変わるので 形などは特定できません。 また、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他の作業のVBAを使用しているので VBAで削除が出来ればと思います。 よろしくお願いします。

  • EXCEL VBA

    EXCELの指定した範囲(例えばrange("A1:C5"))にある オートシェイプ 図 テキストボックス を選択しグループ化するためには どのようにコードを記述すればいいでしょうか

  • エクセルVBAについて

    どのジャンルで投稿すれば良いか分からなかったのでここに投稿しました。私はエクセルVBAの機能を利用して簡単なソフトを作っているのですが、どうしても分からないことがあるので教えて下さい。あるシートのある範囲内に描かれているオブジェクト(例えば直線123,図123,オートシェイプ123)をすべて選択して一括削除するプログラムが分かりません。詳しい方教えて下さい。

  • Excel VBA コメントに関して

    Excel2003を使用しています。 VBAになるのかは定かではないのですが Excelの機能に「コメント」を付ける機能がありますよね セルに対してカーソルを合わすことで表示される黄色い枠のコメントのことをしるす。 これをオートシェイプやコマンドボタン等のオブジェクトに対してカーソルを合わせることに よってこのコマンドがなんなのかのコメントを付けたい場合Excelでできるのでしょうか? もし、できるとしたならばどのようにしたらいいのでしょうか? VBAを使いできるのか、もっと楽な方法があるのか 教えて頂きたいのです。 ご教授願えないでしょうか、宜しくお願いします(人>д<*ペコ謝) ※補足※ コマンドボタンやオートシェイプでテキストを入れてしまうとボタン自体が入れる文字数によって大きくなってしまうのでできるだけ小さいボタンを作り補足事項やヘルプとして使用したい。 コマンドボタンにはVBAプログラムを組むとして、オートシェイプならば、図形にマクロを登録するとして、カーソルを合わした時のみコメントを表示させたいということです。

  • EXCEL VBAについて

    EXCEL VBAに詳しい方よろしくお願いいたします ユーザーからフォルダー指定してもらい そのフォルダー内に入っているすべてのブック、すべてのシートの検索、 (シート内にオートシェイプの中に文字を入れたものもアリ。検索対象。) そして、その検索にヒットしたシート名とブック名を別のテキストファイルに吐き出す。 それとは別に検索に引っかかった文字を青に置き換える(EXCELシート内)事は可能でしょうか? 文字の色は変わるのですがオートシェイプ内の色が変えられません。 何時間がんばりましたが、経験不足のためどうもうまくいきません。 どなたか親切な方、お教えいただけたら幸いです。

  • 【VBA】 VBAを使ってExcelにSendMessageしてメニューを実行したい

    エクセルにおいて、VBAを使ってExcelに対してSendMessageをおこないメニューを実行したいのですが、メニューのSendMessageの引数WPARAMとLPARAMに 何を渡せば良いのでしょうか?SPY++を使ってメニューを実行したときにExcelに送られるWM_COMMANDを監視していましたがWM_COMMANDが見つかりませんでした。 ご存知の方、ご教授お願いします。 ちなみに、オートシェイプ選択時に「書式」-「オートシェイプ」メニューを実行し、書式設定ダイアログが表示され、オートシェイプの書式設定を変更するのが目的です。(VBAを使って書式設定のダイアログを表示する必要あり) SendKeysステートメントを使ってやってみましたがダメでした。この場合、モードレスダイアログに書式設定するコマンドボタンを配置し、そのボタンをクリックしたときにSendKeysを実行するもので、モードレスダイアログを表示している間はキーがモードレスダイアログに送られると判断してSendKeysの使用はやめました。

  • エクセルVBAオートシェイプがあったら、の書き方

    皆さんこんにちは。 エクセルVBAの初心者です。 IFを使った条件分岐が私には難しかったので SELECTCASEを用いてみようと思うのですが条件の書き方が分かりません。 やりたい事は セルA1が「文字が入っていない且つオートシェイプが入っていない場合」のみ アクション(オートシェイプ☆を貼る)を起こしたい、です。 イメージ的にこうなるかな?と思いコードを作成しましたが ケース2の「オートシェイプがあったら」という条件の書き方が分かりません。 Sub オートシェイプ貼り付け()   With ThisWorkbook.Worksheets("Sheet1")   Select Case True     Case .Range("A1").Value <> ""     Exit Sub     Case オートシェイプがあったら     Exit Sub     Case Else       オートシェイプ☆を貼る   End Select End Sub オートシェイプの有無を条件にするにはどのような書き方をすれば良いでしょうか?

  • EXCELのShape画像をVBAのフォームに表示するには

    EXCELのShape画像をVBAのフォームに表示するには はじめまして EXCEL2007-VBAを勉強中です。 EXCELのShape画像をVBAのフォームへ表示したいのですが、どのように書けば よろしいのでしょうか

専門家に質問してみよう