• 締切済み

Excel 画像クリックでマクロ実行

Sheet上にある画像をクリックすると拡大表示する、という動作をさせたいと考えています。 画像は複数個、順次追加されるので、画像にマクロを組みこんで、ボタン化する、ということではなく、イメージとしてはWorkbook_SheetChangeでどのセルの値を変えてもマクロが実行されるように、どの画像をダブルクリックしても、その画像が拡大されるようにしたいのですが可能でしょうか?

みんなの回答

  • kon555
  • ベストアンサー率51% (1846/3566)
回答No.2

 画像のダブルクリックでのマクロ起動は、エクセルのイベント設定としては無理です。ただ複数のマクロを活用して、疑似的に同様の状態にする事は、多分可能です。  要は「A,画像を拡大するマクロ」と「B,シート内の全画像にマクロA 登録するマクロ」を組み合わせて運用すればいけます。  ダブルクリックについては私は経験ありませんが、可能ではあるようです。 1.画像のサイズの変更 https://xtech.nikkei.com/it/atcl/column/15/090100207/090100095/ 2.マクロを登録するマクロについて https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12181131792 参考.ダブルクリックのイベント設定 https://riptutorial.com/ja/excel-vba/example/13687/excel図形のダブルクリックイベント

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

課題としては、初心者でも(小学生でも、またWEBのストアーの商品写真でよく出てくる)思いつくような課題ですが、ExcelVBAでと言っても、エクセルシートの利用の本筋ではなく、周辺的なことで、解決には、いろいろ苦労が多く、「止めとき、なはれ」というのが小生の本音です。エクセルシートをあまり何でもかんでもに、使うのは難しくなるだけ。 ーー 以下は中途半端な回答ですが、 写真挿入は Sub test01() Worksheets("Sheet1").Shapes.AddPicture Filename:="C:\Users\XXX\Pictures\YYYYYYYY.JPG", _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=20, _ Top:=lngTop, _ Width:=300, _ Height:=200 End Sub のようなコードで、写真1つ挿入できる。 複数の写真を並べるのは Filename:=zzzのところを、同一列セル範囲や配列に、フルパス名のデータを持って、For Nextで繰り回し、Topの位置を前回画像のHeightの値より下に来るように計算してずらして、設定すればよい。 ーーーーー そして画像の数だけ下記コードを書き連ねるつもりなら、1つ目に対しては ーー Sub test06() Worksheets(1).Shapes(1).OnAction = "ShapeClick1" End Sub Sub shapeClick1() MsgBox "画像をクリックされました" ActiveWorkbook.Worksheets("Sheet1").Shapes(1).Width = ActiveWorkbook.Worksheets("Sheet1").Shapes(1).Width * 2 ActiveWorkbook.Worksheets("Sheet1").Shapes(1).Height = ActiveWorkbook.Worksheets("Sheet1").Shapes(1).Height * 2 End Sub のように OnAction = "ShapeClick1" Sub shapeClick1() Shapes(1). の順序数1の部分を、整数的に増やして変化させてコートを書けばよい。 この「1」が示すものはShapesのインデックス番号です。 しかし、Shapeを一旦作って、そのShapesを消して、また作ると、Index番号が変わる場合が多いので、注意のこと。 又2倍に拡大すると、直下の画像を覆うが、その対策や、元の大きさに初め戻すことのしくみや、そのコードは書けていないので,中途半端ですみません。 ーー 数が多いとコードを書くのも面倒だし、プログラムを経験して行くと、そういうやり方は、泥臭いと感じるようになる。10個ぐらいならコードをコピペして 関係個所を数か所修正すれば仕舞ですが。 ーー これをコントロール配列的な仕掛けに持って行くのは、コマンドボタン(例 電卓の数字キーを連ねて使うとして)などの例は、エクセルVBAでは、「クラスモジュール」で「WithEvents」を使う方法がWEBを調べれば載っているので、気が向いたらやってみたら。でも未経験者で分からない人には、すぐには判るのは無理だろう。小生は、Shapesでも(CommandButtonと同じように)やれるかどうか未経験です。

関連するQ&A

専門家に質問してみよう