プロが教えるわが家の防犯対策術!

ExcelVBAです。
Excelで画像をクリックしたとき、拡大あるいは縮小したいのですが、まず、画像をクリックしたときどのようなアテンションを捕えられるでしょうか?
セルでしたら、
Worksheet_BeforeDoubleClick があるのは知っているのですが、画像の選択の時がわかりません。
次に、100%時のサイズを知りたいのですが、どのようしたらわかるでしょうか? 100%がわかれば、Selection.ShapeRange.Height でサイズを指定できると思っています。

よろしくお願いします。

A 回答 (6件)

myRangeです。



>クリックでイベントが取れるのでしたらクリックでお願いします。

了解しました。。。。が、

>セルのイベントのようにBeforeDoubleClickでもBeforeRightClickでも
>あるいはそれ以外の動作に対してでも1つの画像を指定したイベントを捕えたい

これ意味が分かりかねます。。
だんだん、京極夏彦の世界へと入っていくような。。。。(^^;;;

ま、それは置いといて、、クリックイベントのコード。
新しいブックで下記をお試しあれ。

(1)標準モジュールに次のコードを置いておく
'------------------------------------------
Option Explicit

  Public Flag As Boolean

Sub 拡大縮小()
  With ActiveSheet.Shapes(Application.Caller)
    If Flag Then
       .ScaleWidth 0.2, msoTrue
       .ScaleHeight 0.2, msoTrue
    Else
       .ScaleWidth 1, msoTrue
       .ScaleHeight 1, msoTrue
    End If
  End With
  Flag = Not Flag
End Sub
'---------------------------------
(2)シートに画像を複数挿入する
(3)画像を右クリック > マクロの登録
(4)表示されたダイアログで、"拡大縮小"を選択
  この時、マクロの保存先を間違えないようにすること
(5)ダイアログを閉じる
(6)上記3~5を画像分繰り返す


尚、デフォルト(縦横比を固定)の状態であれば、
ScaleHeight、ScalseWidthのどちらか一方だけでいいのですが
分かりやすいように両方書いておきました。

以上です。
 
    • good
    • 1
この回答へのお礼

ありがとうございます。

3-5を繰り返すということですと求めていたものと違うので無理なのかと思いました。
しかし、3-5の繰り返しをマクロ化することにより解消しました。

お礼日時:2010/12/16 00:28

>ダブルクリックされた画像だけを拡大



あらら、 ●ダブル●クリックでしたか、
最初の質問では、▲クリック▲となってますがねぃ。

アップしてもいい、といったのは
最初の質問の▲クリック▲イベントのコードです。

画像にマクロを登録しても、
ダブルクリックイベントは取得できません。
ダブルクリックのコードは他の方の回答を待ちましょう。

以上です。
 

この回答への補足

すみません。
クリックでイベントが取れるのでしたらクリックでお願いします。
セルのイベントのようにBeforeDoubleClickでもBeforeRightClickでも、あるいはそれ以外の動作に対してでも1つの画像を指定したイベントを捕えたいのです。

補足日時:2010/12/14 02:15
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/12/16 00:29

回答2、myRangeです。



ScaleHeightメソッドの引数RelativeToOriginalSizeを使うことで
元のサイズ(原型)を取得する必要がないのは分かりましたね。
ちゃんとヘルプも参照して再確認しておきましょう。


>やりたいことの全体です。
>1.VBAで不特定の複数画像をシートに貼り付けます。
>この時サイズは縮小しておきます。
>2.指定した画像をクリックして原画サイズにします。
>再度クリックしたら、縮小サイズにします。

やりたいことはわかりましたが、まだ疑問点があり。
貼り付けた画像全てに対して同じ処理をするのでしょうか?
それぞれの縮小率は同じでしょうか?
何れにしろマクロはひとつでOKです。
 
ところで画像貼り付けマクロは作成済みでしょうか?
 
これらを補足するとサンプルコードが回答されるでしょう。
回答がなかった場合は(必要であれば)当方がアップします。


それから、タイトルの
「画像のクリックのアテンション」は、
「画像のクリックイベント」が正しい表現です。
以上です。

この回答への補足

ありがとうございます。
補足します。
>貼り付けた画像全てに対して同じ処理をするのでしょうか?
>それぞれの縮小率は同じでしょうか?
出来れば、ダブルクリックされた画像だけを拡大(と言っても100%)/縮小(20%とかHeight=100 この単位がわからないですけど)のように切り替えて表示します。1シートに10個とか20個あったとき、ダブルクリックされた画像が対象です。

>何れにしろマクロはひとつでOKです。
これができるとありがたいです。
画像はVBAで任意に貼り付けますので、そのたびにマクロを掛けないので、先に1つ書いておけばOKでしたら助かります。

>ところで画像貼り付けマクロは作成済みでしょうか?
今回まだ作成してません。
このあたりは自分でといいますか、マクロの自動記録でもできると思っています。

補足日時:2010/12/10 21:43
    • good
    • 0
この回答へのお礼

ありがとうございます。
1日見れなかったので遅くなりましたが、補足に書き込みました。

お礼日時:2010/12/10 21:44

>マクロ登録は個別に行わないといけないのでしょうか。


そうなると思いますが、コピーで作ることになるでしょうからそれ程、苦でもないと思います。
元のプロシージャを作って参照渡しなり値渡しなりで作ればそう多くならないのでは。

>100%(原型のサイズ)と・・・・
そういうことですか。仰りたいことが分かりました。
直接取得するプロパティは知りません。やり方がないわけではないです。
Selection.shaperange.ScaleHeight 1, msoTrue
Selection.shaperange.ScaleWidth 1, msoTrue
で原型サイズに戻りますから
このあとにSelection.ShapeRange.Heightで取得すれば出来ます。

もっとも、原型サイズの値自体は存在するのですから直接
Selection.shaperange.ScaleHeight 1, msoTrue
でサイズ指定すれば宜しいかと思います。
1のところが倍率で100%です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

100%のほうはわかりました。

やはりマクロは個別に必要なのですね。
VBAで不定の複数画像を貼り付け、貼り付けたものを拡大縮小したかったので、個別に書くのは避けられないかと思いました。

お礼日時:2010/12/09 16:28

画像のサイズ云々の前にやりたいことについて説明不足があり



>Excelで画像をクリックしたとき、拡大あるいは縮小したい

例えば、画像をクリックで、拡大した後、
その拡大した画像を縮小する場合はどうするのでしょうか。
もう一度画像クリックですか?
更に画像クリックしたら?

そこらをも少し詳しく補足した方がベターでしょう。
そうしないと何度もやり取りするはめになる気がします。


因みに、画像、OLEObjectの拡大縮小については、
ScaleHeightメソッドの引数RelativeToOriginalSizeで
元の画像を基準にするか、現在の画像を基準にするか設定できるので
元の画像のサイズを取得しておく必要はありません。
また、拡大縮小を元の画像の何%か、でやれば簡単です。

どうしても元の画像サイズが必要な場合は
シートに画像を張り付けた後、
画像名(貼り付け後の)、Height,Widthの値を
適当なセルに落としておけばいいと思いますが。 
以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
説明不足ですみません。

やりたいことの全体です。
1.VBAで不特定の複数画像をシートに貼り付けます。
この時サイズは縮小しておきます。
2.指定した画像をクリックして原画サイズにします。
再度クリックしたら、縮小サイズにします。

お礼日時:2010/12/09 16:35

図でも写真でも右クリックして出てくる”マクロのの登録”を使います。


予め作っておいたものを設定します。

恐らく~select
とやっているでしょうから
h=Selection.ShapeRange.Height
で h に100%がになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
マクロ登録は個別に行わないといけないのでしょうか。
つまり、図や写真が10個あったら、10個分のマクロを書かなければなりませんか。

100%のときの高さを覚えておくということだと思いますが、図の書式設定には原型のサイズというものがありますので100%(原型のサイズ)というプロパティがあるのではないかと思いました。これを取り出せないでしょうか。

お礼日時:2010/12/08 09:55

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