時間外モード


以下のコードは、まずDataシートのセルA1にある画像をSheet1のセルA1からR20の範囲に拡大して表示し、0.1秒後に削除し、その後DataシートのセルZ1にある画像を同様に表示して、0.1秒後に削除します。


Sub ShowAndHideImage()

    Dim img As Object

    Dim dataSheet As Worksheet

    Dim targetSheet As Worksheet

    Dim imagePath As String

    

    ' ワークシートを設定

    Set dataSheet = ThisWorkbook.Sheets("Data") ' 画像があるシート

    Set targetSheet = ThisWorkbook.Sheets("Sheet1") ' 画像を表示するシート

    

    ' 画像ファイルのパスを取得して画像を表示

    ShowImage dataSheet.Range("A1").Value, targetSheet

    

    ' 0.1秒後に画像を削除

    Application.OnTime Now + TimeValue("00:00:00.1"), "HideImage", , True

    

    ' 0.1秒待ってから次の画像を表示

    Application.Wait Now + TimeValue("00:00:00.1")

    

    ' 画像ファイルのパスを取得して画像を表示

    ShowImage dataSheet.Range("Z1").Value, targetSheet

    

    ' 0.1秒後に画像を削除

    Application.OnTime Now + TimeValue("00:00:00.1"), "HideImage", , True

End Sub


Sub ShowImage(imagePath As String, targetSheet As Worksheet)

    Dim img As Object

    

    ' 画像を表示

    Set img = targetSheet.Pictures.Insert(imagePath)

    

    ' 画像を指定範囲に拡大表示

    With img

        .Top = targetSheet.Range("A1").Top

        .Left = targetSheet.Range("A1").Left

        .Height = targetSheet.Range("R20").Top - targetSheet.Range("A1").Top

        .Width = targetSheet.Range("R20").Left - targetSheet.Range("A1").Left

        .Placement = 1 ' xlMoveAndSize

        .PrintObject = True

        .CutCopyMode = False

    End With

End Sub


Sub HideImage()

    Dim img As Object

    Dim targetSheet As Worksheet

    

    ' 画像を表示するシートを設定

    Set targetSheet = ThisWorkbook.Sheets("Sheet1")

    

    ' 画像を削除

    For Each img In targetSheet.Pictures

        img.Delete

    Next img

End Sub

コメント

このブログの人気の投稿