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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 複数のImageコントロ...
-
背景画像の繰り返しについて
-
Excelで画像クリックのアテンシ...
-
VBAのユーザーフォームのイメー...
-
uwsc画像認識のあいまい判定に...
-
モーダルウィンドウ内で複数の...
-
UWSCの色判定
-
uwcs のマクロで画像認識をして...
-
jpgファイルの内容を比較したい...
-
VB6での画像のサイズ変更に関して
-
jqueryスライダーを2段でスライ...
-
ワードプレスで画像を何枚か横...
-
OpenCVを使った画像の切り抜き
-
【PowerPoint】VBAで画像サイズ...
-
googleadsenceの審査について質...
-
VB6でプリントスクリーンを無効...
-
C#のForm内に複数画像を繰り返...
-
UWSCの画像認識と条件分岐につ...
-
gif 画像上の ボタンに リン...
-
UWSCでループ処理がうまくいき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
jqueryスライダーを2段でスライ...
-
「using Windows」でエラーが出る
-
画像のピクセルデータの取得
-
ImageMagickでgif画像の一部が...
-
Excel ユーザーフォームで表示...
-
uwcs のマクロで画像認識をして...
-
uwscの画像認識に失敗します。
-
vb.net 画像の透過について
-
VBA シート毎に画像挿入
-
UWSC 画像判定と条件分岐について
-
UWSC「画像が無い場合」
-
gif 画像上の ボタンに リン...
-
Pythonでgif画像が上手く作れない
-
VBAのユーザーフォームのイメー...
-
UWSC 画像認識で条件分岐
-
【WPF】画像の切り替え
-
パネルに画像
おすすめ情報