
ExcelVBAです。
Excelで画像をクリックしたとき、拡大あるいは縮小したいのですが、まず、画像をクリックしたときどのようなアテンションを捕えられるでしょうか?
セルでしたら、
Worksheet_BeforeDoubleClick があるのは知っているのですが、画像の選択の時がわかりません。
次に、100%時のサイズを知りたいのですが、どのようしたらわかるでしょうか? 100%がわかれば、Selection.ShapeRange.Height でサイズを指定できると思っています。
よろしくお願いします。
No.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のどちらか一方だけでいいのですが
分かりやすいように両方書いておきました。
以上です。
ありがとうございます。
3-5を繰り返すということですと求めていたものと違うので無理なのかと思いました。
しかし、3-5の繰り返しをマクロ化することにより解消しました。
No.5
- 回答日時:
>ダブルクリックされた画像だけを拡大
あらら、 ●ダブル●クリックでしたか、
最初の質問では、▲クリック▲となってますがねぃ。
アップしてもいい、といったのは
最初の質問の▲クリック▲イベントのコードです。
画像にマクロを登録しても、
ダブルクリックイベントは取得できません。
ダブルクリックのコードは他の方の回答を待ちましょう。
以上です。
この回答への補足
すみません。
クリックでイベントが取れるのでしたらクリックでお願いします。
セルのイベントのようにBeforeDoubleClickでもBeforeRightClickでも、あるいはそれ以外の動作に対してでも1つの画像を指定したイベントを捕えたいのです。
No.4
- 回答日時:
回答2、myRangeです。
ScaleHeightメソッドの引数RelativeToOriginalSizeを使うことで
元のサイズ(原型)を取得する必要がないのは分かりましたね。
ちゃんとヘルプも参照して再確認しておきましょう。
>やりたいことの全体です。
>1.VBAで不特定の複数画像をシートに貼り付けます。
>この時サイズは縮小しておきます。
>2.指定した画像をクリックして原画サイズにします。
>再度クリックしたら、縮小サイズにします。
やりたいことはわかりましたが、まだ疑問点があり。
貼り付けた画像全てに対して同じ処理をするのでしょうか?
それぞれの縮小率は同じでしょうか?
何れにしろマクロはひとつでOKです。
ところで画像貼り付けマクロは作成済みでしょうか?
これらを補足するとサンプルコードが回答されるでしょう。
回答がなかった場合は(必要であれば)当方がアップします。
それから、タイトルの
「画像のクリックのアテンション」は、
「画像のクリックイベント」が正しい表現です。
以上です。
この回答への補足
ありがとうございます。
補足します。
>貼り付けた画像全てに対して同じ処理をするのでしょうか?
>それぞれの縮小率は同じでしょうか?
出来れば、ダブルクリックされた画像だけを拡大(と言っても100%)/縮小(20%とかHeight=100 この単位がわからないですけど)のように切り替えて表示します。1シートに10個とか20個あったとき、ダブルクリックされた画像が対象です。
>何れにしろマクロはひとつでOKです。
これができるとありがたいです。
画像はVBAで任意に貼り付けますので、そのたびにマクロを掛けないので、先に1つ書いておけばOKでしたら助かります。
>ところで画像貼り付けマクロは作成済みでしょうか?
今回まだ作成してません。
このあたりは自分でといいますか、マクロの自動記録でもできると思っています。
No.3
- 回答日時:
>マクロ登録は個別に行わないといけないのでしょうか。
そうなると思いますが、コピーで作ることになるでしょうからそれ程、苦でもないと思います。
元のプロシージャを作って参照渡しなり値渡しなりで作ればそう多くならないのでは。
>100%(原型のサイズ)と・・・・
そういうことですか。仰りたいことが分かりました。
直接取得するプロパティは知りません。やり方がないわけではないです。
Selection.shaperange.ScaleHeight 1, msoTrue
Selection.shaperange.ScaleWidth 1, msoTrue
で原型サイズに戻りますから
このあとにSelection.ShapeRange.Heightで取得すれば出来ます。
もっとも、原型サイズの値自体は存在するのですから直接
Selection.shaperange.ScaleHeight 1, msoTrue
でサイズ指定すれば宜しいかと思います。
1のところが倍率で100%です。
ありがとうございます。
100%のほうはわかりました。
やはりマクロは個別に必要なのですね。
VBAで不定の複数画像を貼り付け、貼り付けたものを拡大縮小したかったので、個別に書くのは避けられないかと思いました。
No.2
- 回答日時:
画像のサイズ云々の前にやりたいことについて説明不足があり
>Excelで画像をクリックしたとき、拡大あるいは縮小したい
例えば、画像をクリックで、拡大した後、
その拡大した画像を縮小する場合はどうするのでしょうか。
もう一度画像クリックですか?
更に画像クリックしたら?
そこらをも少し詳しく補足した方がベターでしょう。
そうしないと何度もやり取りするはめになる気がします。
因みに、画像、OLEObjectの拡大縮小については、
ScaleHeightメソッドの引数RelativeToOriginalSizeで
元の画像を基準にするか、現在の画像を基準にするか設定できるので
元の画像のサイズを取得しておく必要はありません。
また、拡大縮小を元の画像の何%か、でやれば簡単です。
どうしても元の画像サイズが必要な場合は
シートに画像を張り付けた後、
画像名(貼り付け後の)、Height,Widthの値を
適当なセルに落としておけばいいと思いますが。
以上です。
ありがとうございます。
説明不足ですみません。
やりたいことの全体です。
1.VBAで不特定の複数画像をシートに貼り付けます。
この時サイズは縮小しておきます。
2.指定した画像をクリックして原画サイズにします。
再度クリックしたら、縮小サイズにします。
No.1
- 回答日時:
図でも写真でも右クリックして出てくる”マクロのの登録”を使います。
予め作っておいたものを設定します。
恐らく~select
とやっているでしょうから
h=Selection.ShapeRange.Height
で h に100%がになります。
ありがとうございます。
マクロ登録は個別に行わないといけないのでしょうか。
つまり、図や写真が10個あったら、10個分のマクロを書かなければなりませんか。
100%のときの高さを覚えておくということだと思いますが、図の書式設定には原型のサイズというものがありますので100%(原型のサイズ)というプロパティがあるのではないかと思いました。これを取り出せないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Excel(エクセル) エクセルにサムネイル画像組み込み 2 2022/09/02 17:13
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
このQ&Aを見た人はこんなQ&Aも見ています
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
Excel ユーザーフォームで表示させた画像をユーザーフォーム上で保存したい
Visual Basic(VBA)
-
画像を削除したい(VBA)
Word(ワード)
-
-
4
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
5
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
6
Excelのシート上のShapeにイベントは設定できる?
Excel(エクセル)
-
7
セルに貼り付けた画像の上からダブルクリックを機能させたい
Visual Basic(VBA)
-
8
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
9
任意フォルダから画像をすべてエクセルの指定マスに貼り付けをしたい
Visual Basic(VBA)
-
10
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
11
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
背景画像の繰り返しについて
-
画像にマウスカーソルがのった...
-
イメージマップを使用している...
-
EXCEL VBA 複数のImageコントロ...
-
UWSCでループ処理がうまくいき...
-
画像ボタンクリック後、表示さ...
-
OpenCVによる面積算出
-
掲示板に画像が表示できなくて...
-
raspberry pi でプログラムを開...
-
OpenCVで出力を24bitのbmpにす...
-
UWSCの画像認識と条件分岐につ...
-
画像の一部だけが点滅する画像...
-
R言語 グラフ
-
画像が分割されて切り替わる、...
-
動画像から平均画像を作成する方法
-
uwcs のマクロで画像認識をして...
-
bullet_s.gif という名前の小さ...
-
UWSCを使った画像認証マク...
-
Jimdoで画像をポップアップ表示...
-
写真のサムネイルを表示する(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画像のビット数を変更する方法
-
「using Windows」でエラーが出る
-
EXCEL VBA 複数のImageコントロ...
-
背景画像の繰り返しについて
-
Excel ユーザーフォームで表示...
-
【EXCEL VBA】ダブルクリックで...
-
jqueryスライダーを2段でスライ...
-
画像処理したBitmapをピクチャ...
-
uwscの画像認識に失敗します。
-
uwcs のマクロで画像認識をして...
-
VBAのユーザーフォームのイメー...
-
gif 画像上の ボタンに リン...
-
UWSCでループ処理がうまくいき...
-
UWSCの画像認識と条件分岐につ...
-
画像のピクセルデータの取得
-
画像比較
-
OpenCVでマスク処理で「ぼかし...
-
PowerPoint VBA で画像の鮮明度...
-
UWSCの色判定
-
UWSC 画像判定と条件分岐について
おすすめ情報