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