2

VBAで関数を作成するのは初めてです。次のコードは、ここにあるスクリプトを変更したものです。このコードは、URL (またはファイル システム) から 2 つの画像を Excel スプレッドシートの 2 つのユーザー定義範囲に挿入します。ターゲット シートに、同じブックのソース シートの URL を含むセルを参照する数式があります。コードは独自のシートで正常に機能しますが、ソース シートで作業しているときに、ドキュメントを保存するか、コピー/貼り付けを行うと、ソース シートにも画像が挿入されます。ターゲット シートにのみ貼り付けるように Excel に指示しながら、関数を一般的なままにするにはどうすればよいですか? 保存またはコピー/貼り付けのたびにコードが再計算されないようにするにはどうすればよいですか? ありがとう!禅

Public Function NewPicsToRanges(URL1 As String, URL2 As String, Optional TargetCells1 As Range, Optional TargetCells2 As Range)
' inserts a picture and resizes it to fit the TargetCells range

ActiveSheet.Shapes.SelectAll
Selection.Delete

Dim p1 As Object, t1 As Double, l1 As Double, w1 As Double, h1 As Double
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Function
    'If Dir(URL1) = "" Then Exit Function
    ' import picture
    Set p1 = ActiveSheet.Pictures.Insert(URL1)
    ' determine positions
    With TargetCells1
        t1 = .Top
        l1 = .Left
        w1 = .Offset(0, .Columns.Count).Left - .Left
        h1 = .Offset(.Rows.Count, 0).Top - .Top
    End With
    ' position picture
    With p1
        .Top = t1
        .Left = l1
        .Width = w1
        .Height = h1
    End With
    Set p1 = Nothing

Dim p2 As Object, t2 As Double, l2 As Double, w2 As Double, h2 As Double
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Function
    'If Dir(URL2) = "" Then Exit Function
    ' import picture
    Set p2 = ActiveSheet.Pictures.Insert(URL2)
    ' determine positions
    With TargetCells2
        t2 = .Top
        l2 = .Left
        w2 = .Offset(0, .Columns.Count).Left - .Left
        h2 = .Offset(.Rows.Count, 0).Top - .Top
    End With
    ' position picture
    With p2
        .Top = t2
        .Left = l2
        .Width = w2
        .Height = h2
    End With
    Set p2 = Nothing

End Function
4

1 に答える 1