• ベストアンサー

VBA 画像ファイル ダブルクリック

エクセルVBAで以下のことがしたいです。 シート内にある画像ファイル上でダブルクリックをすると その部分にオートシェイプの丸が表示される。 セルをダブルクリックを見かけましたが 画像をダブルクリックでということは可能でしょうか? またこれは可能であればですが 上記のマクロを開始と終了で分けたいです。 開始する前は画像ファイル上でクリックしても丸は挿入されませんが 開始をして終了を押すまでは丸を挿入できるようにしたいです。 これはできなれば大丈夫です。 まずは画像上でのダブルクリック・・・可能かお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1478)
回答No.3

このマクロはウインドウ枠の固定や分割を行うと正しく動作しません。 半径は、Radiusの値を変更して下さい。 宣言部(Macro1の上)に以下を追加して下さい。 '  マウス位置取得 Type PointApi   X As Long   Y As Long End Type Declare Sub GetCursorPos Lib "User32" (lpPoint As PointApi) Macro0~2 は以前のものをご利用ください。 ' Sub Macro3() '   Const Radius As Long = 50   Dim R1C1Left As Long   Dim R1C1Top As Long   Dim Rect As PointApi '   If Not ShapeSwitch Then     Exit Sub   End If   R1C1Left = ActiveWindow.PointsToScreenPixelsX(0) * 0.75 + Radius   R1C1Top = ActiveWindow.PointsToScreenPixelsY(0) * 0.75 + Radius   GetCursorPos Rect   ActiveSheet.Shapes.AddShape(msoShapeOval, _    Rect.X * 0.75 - R1C1Left, _    Rect.Y * 0.75 - R1C1Top, Radius * 2, Radius * 2).Select   Selection.ShapeRange.Fill.Visible = msoFalse   Selection.ShapeRange.Line.Weight = 1   Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0) End Sub gobou_poo さんの書いた方法はわかりませんでした。できるというのなら、イベントをとる方法だけでも、具体的に書いていただければ、と思います。

yyrd0421
質問者

お礼

完璧に望み通りのことができました。 本当にありがとうございました。

その他の回答 (2)

noname#232800
noname#232800
回答No.2

私は、シェイプを置く場所をセルアドレスで取得し、セルの値変更であればイベントがとれます。 アドレスも、レンジで渡されます。

  • SI299792
  • ベストアンサー率48% (715/1478)
回答No.1

 残念ながら、画像をダブルクリックして、マクロ起動する方法はありません。  画像にマクロを登録しておけば、画像をクリックしての起動は可能ですが、シングルクリックで動いてしまいます。それでよければ、以下のマクロです。  使い方。 まず、Macro0を実行します。全ての画像にMacro3を登録して、同時に全てのオートシェイプを消します。最初と画像が増えた時に実行します。 Macro1が開始で、Macro2が終了です。ボタンを2つ作って、このマクロを登録しておいて下さい。 Macro3が本体です。  なお、実行した画像は、マクロの登録を消しています。こうしておかないと、クリックするたびに丸が表示され、何重にもなってしまうからです。したがって、クリックで丸を表示した後、手作業で消し、またクリックしても、〇は表示されません。 ' Option Explicit ' Dim ShapeSwitch As Boolean ' Sub Macro0() '  初期化(全ての画像にMacro3を登録、オートシェイプを消去)   Dim Shape As Object '   For Each Shape In ActiveSheet.Shapes '     Select Case Shape.Type      Case msoPicture       Shape.OnAction = "Macro3"      Case msoAutoShape       Shape.Delete     End Select   Next Shape End Sub ' Sub Macro1() '  開始   ShapeSwitch = True End Sub ' Sub Macro2() '  終了   ShapeSwitch = False End Sub ' Sub Macro3() '   If Not ShapeSwitch Then     Exit Sub   End If '   With ActiveSheet.Shapes(Application.Caller)     ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, .Top, .Width, .Height).Select     Selection.ShapeRange.Fill.Visible = msoFalse     Selection.ShapeRange.Line.Weight = 1     Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0)     .OnAction = ""   End With End Sub  どうしても、ダブルクリックにしたいのであれば、一定時間内にマウスクリックがあれば実行するという方法がありますが、マウスの動作確認をするプログラムを組み込まなければならず。かなり複雑になります。

yyrd0421
質問者

補足

すごいです。こんなことができるとは驚きました。 ありがとうございます。 私の質問のしかたがよくなかったのですが >ダブルクリックをするとその部分に というのはマウスポインタを中心にしてという意味でした。 頂いたマクロだと画像を中心にして○が表示されますが これをマウスポインタを中心にでできますでしょうか?

関連するQ&A

  • ダブルクリックでオートシェイプ作成

    エクセル2000を使用しています シートにイメージコントロールを貼り付け、画像を取り込みます その画像の上でダブルクリックすると、吹き出しのオートシェイプが作成されるようにしたいのです 作成される位置はダブルクリックした場所、 という質問なのですが、こんな事は可能なのでしょうか 宜しく御願いいたします

  • オートシェイプをクリックしてマクロを実行するには?

    EXCEL97です。 オートシェイプをクリックまたはダブルクリックされたことをひろってVBAが実行されるようにしたいのですができるのでしょうか。 セルであればワークシートのイベントでできるのですが図形でのやり方がわからず困っています。 ちなみに図形には直線、四角形(テキストも)、矢印などが対象になります。 すみませんがご教授お願いします。

  • エクセルVBA ダブルクリックで数字を加算

    お世話になります。 エクセルのVBAに関してご質問させてください。 該当セルをダブルクリックするごとに、数字を加算させてゆくようなマクロを組みたいと考えています。 ご存じのかたがおられましたら、なにとぞよろしくお願いいたします。

  • オートシェイプを画像ファイルで保存

    ※Excel2003VBAです オートシェイプを画像ファイル(BMP,PNG,jpgなど)のファイルに保存するVBAを探しています。 そもそもExcelの通常作業でも出来ないのでマクロの記録も出来ません。 サイトでもよいので教えていただけますか。

  • Excelがダブルクリックで開かなくなりました

    Excelブックがダブルクリックで開かなくなりました。 「ファイル」→「開く」からだと開けるのですが、 ブックを直接ダブルクリックで開こうとすると、空っぽの Excelが立ち上がってしまいます。ネットで調べてみて 「ツール」→「オプション」→「全般」タブの 「ほかのアプリケーションを無視する」のチェックが はずれていることも確認したのですが、ダメでした。 おそらくマクロが関係しているのかなと思い、このカテゴリ に投稿させて頂きました。VBAの知識に乏しい為、自分で 作ったマクロにも関わらず、何が悪いのかわかりません。 VBAでこういう現象が起こりうるケースをご存知でしたら 教えて頂けますでしょうか? 宜しくお願い致します。

  • エクセルのダブルクリックについて

    エクセルで仕事をしています。前任者から引き継いだシートのセルの内容をダブルクリックすると印刷%レビューの画面になり,印刷範囲も変更になるようなのでこまっています。そのようなマクロか何かがあるのでしょうか?

  • 「セルをダブルクリックしたら」イベント VBA

    エクセルのシートのイベントで、「セルをダブルクリックしたら」 というのはないですか? ここになければないのでしょうか?

  • オートシェイプをWクリックしたらショートカットして図の選択画面になる様になりませんか

    こんにちは老人会新米会計役員 XP エクセル2003です。 お年ですが少しはエクセルがわかります。 ばばあ部の通信販売の写真入カタログを作成していますが 写真挿入が多いので大変です。2日間OKで調べましたら セルをダブルクリックすると図の選択画面が出るマクロが 紹介されていました。やってみたら大変便利ですが オートシェイプへ写真を挿入すれば、大きさ又デザインが 自由になり非常に使いやすくなります。 しかしオートシェイプでは 四角形挿入→右クリ→書式設定→色と線→塗りつぶし →塗りつぶし効果→図→選んで→挿入 →OKとものすごく手間がかかります。 そこでオートシェイプをダブルクリックしたら図の選択画面へ ショートカットで行くような事はできませんか。 若手のばあさん(58歳)しかキーボードをさわれません。 でも簡単になれば教えられます。 宜しくお願いいいたします。

  • マクロでオートシェイプを表示したいのですが(泣)

    マクロが理解できない初心者です。 エクセルで書類を作成しているのですが 「特定のセルに入力された文字列を 楕円のオートシェイプで囲む」といった要領で 分類する項目が大量にある書類を作成することになり マクロの記録を使ってマクロを作成しようと試みたのですが うまくいかず、困っています・・・ VBAなどで記入してマクロを作るということは 検索してわかったのですが 勉強する時間的余裕がありません・・・ どなたかご教授ください おねがいします。 例 |新規|継続|といった項目のどちらかを分類するために 囲みたいセルをダブルクリックすると 楕円のオートシェイプで項目の文字列を囲むいう感じです。 ダブルクリックするとシェイプが表示され さらにダブルクリックすると非表示になるといったマクロが できないでしょうか?

  • ダブルクリックで画像挿入

    結合されたセル(例:A3、M3、Y3、A34、M34、Y34、A65、M65、Y65←これは固定)をダブルクリックすると (または、ただ単にセルをダブルクリックすると) 画像を任意のフォルダから読み込み、挿入するというものを作りたいのですが、どのようにすればよいでしょうか? ご教授お願いします。

専門家に質問してみよう