Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
写真がセルのサイズにならない
投稿日時: 19/02/10 13:16:57
投稿者: Highout

お世話になります。
 
エクセルで工事写真を整理していますが、結合セルB2:B19、B20:B38....と19行おきに写真を貼り付けるセルが
有ります。
これに一括で写真を取り込もうとして、Web上のコードを参考にして以下のコードを作成しましたが、セルのサイズにならなくて小さい画像が張り付いてしまって困っています。
どこに原因があるのでしょうか。ご教授よろしくお願いします。
 
Sub 画像一括取込()
    Dim mySp As Object
    Dim myAD1 As String
    Dim myAD2 As String
    Dim i As Integer
    Dim fName, pict As Picture
   If ActiveCell.Value <> "余 白" Then
        Exit Sub
    End If
     
     
  fName = Application.GetOpenFilename("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , MultiSelect:=True)
  
 Application.ScreenUpdating = False
  
 '===============画像の掃除
    For Each mySp In ActiveSheet.Shapes
        myAD1 = mySp.TopLeftCell.MergeArea.Address
        myAD2 = Selection.Address
        If myAD1 = myAD2 Then mySp.Delete
    Next
   
  If IsArray(fName) Then
    For i = 1 To UBound(fName)
        Set pict = ActiveSheet.Pictures.Insert(fName(i))
        pict.TopLeftCell = ActiveCell
        pict.Width = ActiveCell.Width
        pict.Height = ActiveCell.Height
        ActiveCell.Offset(19, 0).Activate
    Next i
  End If
 
 Application.ScreenUpdating = True
End Sub

回答
投稿日時: 19/02/10 13:38:22
投稿者: WinArrow
投稿者のウェブサイトに移動

ActiveCell
をキチンと理解してください。
 
ActiveCellは、1つのセルです。
セル範囲を選択している場合は、Selectionを使いましょう。

回答
投稿日時: 19/02/10 14:11:34
投稿者: WinArrow
投稿者のウェブサイトに移動

↑のセル範囲は、結合セルも同じです。
 
ActiveCellとSelectionの違いを確認する方法
 
Debug.print Activecell.Address
Debug.print Selection.Address

投稿日時: 19/02/10 14:20:09
投稿者: Highout

WinArrowさま、早速のご教授ありがとうございます。
 
 pict.Width = ActiveCell.Width
 pict.Height = ActiveCell.Height
 
この2行をActiveCellからSelectionに変更するだけで写真のサイズが変わりました。
ありがとうございました。