
下記マクロプログラムで、
「任意のセルにダブルクリックでセルに合わせたサイズで写真を貼り付ける」
ことは成功するのですが、
写真を貼るセルが右方向に行くほど、少しずつ画像がセルからはみ出してしまいます。
(例えば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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
VBAでセル同士を比較して色付け
-
i=cells(Rows.Count, 1)とi=cel...
-
連続する複数のセル値がすべて0...
-
エクセルvbaで、別シートの最下...
-
DataGridViewの各セル幅を自由...
-
Excel VBA、 別ブックの最終行...
-
【Excel VBA】指定行以降をクリ...
-
VBAでセルをクリックする回...
-
Excel VBA マクロ ある列の最終...
-
範囲内で最大値を見つけ、その...
-
DataGridViewで列、行、セルの選択
-
vb.netによるEXCEL値取得
-
Excel VBAで、 ヘッダーへのセ...
-
EXCELで変数をペーストしたい
-
ExcelのVBAで数字と文字列をマ...
-
スプレッドシートの数値列に対...
-
Excelのプルダウンで2列分の情...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
特定のセルが空白だったら、そ...
-
VBA実行後に元のセルに戻りたい
-
【Excel VBA】指定行以降をクリ...
-
任意フォルダから画像をすべて...
-
【Excel】指定したセルの名前で...
-
VBAでセルをクリックする回...
-
【VBA】シート上の複数のチェッ...
-
EXCELのVBA-フィルタ抽出後の...
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
”戻り値”が変化したときに、マ...
-
ExcelのVBAで数字と文字列をマ...
-
VBA ユーザーフォーム ボタンク...
-
Excel VBA マクロ ある列の最終...
-
Excel VBA、 別ブックの最終行...
おすすめ情報