時間外モード
以下のコードは、まず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
コメント
コメントを投稿