下記マクロプログラムで、
「任意のセルにダブルクリックでセルに合わせたサイズで写真を貼り付ける」
ことは成功するのですが、
写真を貼るセルが右方向に行くほど、少しずつ画像がセルからはみ出してしまいます。
(例えばA1だときっちりサイズが収まるが、D1、AA1など右に移動するとなぜか写真が
微妙にセルから右側にずれる。下方向(A6,A99)などはずれません。
このずれは直らないものなのか、もし直せるならどう書き換えたらよいか、
また、現在は写真サイズがセルに合うようにしているので、
もし、写真サイズを一回り小さくすれば解決するのであれば、
どのようにプログラムを書き換えたらよいか教えていただければ
と思い投稿しました。
マクロは初心者で複雑なものはわからないため、
どなたかわかる方いらっしゃいましたら、よろしくお願いいたします。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim PicFile As Variant
Dim rX As Double, rY As Double
'[ファイルを開く]ダイアログボックスを表示
PicFile = Application.GetOpenFilename( _
"画像ファイル,*.jpg;*.jpeg;*.gif;*.tif;*.png;*.bmp")
If VarType(PicFile) = vbBoolean Then Cancel = True: Exit Sub
Application.ScreenUpdating = False
'画像を挿入
With ActiveSheet.Shapes.AddPicture(PicFile, msoFalse, msoTrue, Selection.Left, Selection.Top, -1, -1)
rX = Target.Width / .Width
rY = Target.Height / .Height
If rX > rY Then
.Height = .Height * rY
Else
.Width = .Width * rX
End If
'セルの中央(横方向/縦方向の中央)に配置
.Left = Target.Left + (Target.Width - .Width) / 2
.Top = Target.Top + (Target.Height - .Height) / 2
End With
Application.ScreenUpdating = True
Cancel = True
End Sub
No.1ベストアンサー
- 回答日時:
貼り付けた画像 (Shape オブジェクト)の Width と Height が正しく取得てきていれば、少なくともセルからはみ出ることはなさそうに思えます。
私のところで確認したところ、同一画像を連続して貼り付けていっても全く同じようにずれることなく貼りつきました。
シートの列幅は全く同じになってることを確認したうえで、同じ画像ファイルを貼りてつけていってもD列あたりからずれていきますか?
早速ご回答ありがとうございます、大変助かります。
ご質問いただいた件ですが、提携フォーマットになっていて、
シート列幅は一定です。
A列B列が結合セル、その次は、E列F列が結合セルになっています。
最初の方はわからないのですが、BA列など離れるにつれて、ずれてくる感じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
Excel のバージョンによって、図形の位置がずれる
Excel(エクセル)
-
[VB.net] Excelへの画像貼り付け処理についての疑問
Visual Basic(VBA)
-
-
4
エクセルに写真を挿入するマクロを組んでいます。
Visual Basic(VBA)
-
5
エクセルVBAで縦向きの画像の挿入・回転
Excel(エクセル)
-
6
エクセル 画像挿入マクロで、ずれます
その他(Microsoft Office)
-
7
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
-
8
【VBA】写真の貼り付けコードがうまく機能しません。
Visual Basic(VBA)
-
9
ExcelのxlDialogInsertPictureで。
Excel(エクセル)
-
10
ExcelVBAで画像のサイズを調べるマクロを作ろうと思っています
Access(アクセス)
-
11
オートシェイプがずれる
Excel(エクセル)
-
12
【EXCEL VBA】ダブルクリックでセルのサイズに合わせて画像を挿入に機能を追加したいです。
Visual Basic(VBA)
-
13
回転させた画像を左上のセルにフィットさせたい
Excel(エクセル)
-
14
Excel 画像貼り付けのVBAについて
Excel(エクセル)
-
15
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
VBAでセルをクリックする回...
-
Excelのハイパーリンクにマクロ...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
EXCELで変数をペーストしたい
-
Excel vbaで特定の文字以外が入...
-
Sub 要具ライフ() ActiveSheet....
-
TODAY()で設定したセルの日付...
-
【VBA】指定したセルと同じ値で...
-
エクセル マクロで セルの範...
-
VBAの計算で@が出てしまう件
-
DataGridViewのセル編集完了後...
-
任意フォルダから画像をすべて...
-
セルに抜けた番号の代わりに空...
-
DataGridViewで右寄せ左寄せが...
-
”戻り値”が変化したときに、マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報