こちらの記事に触発されて、ちょっと昔やった別の方法をご紹介。
infoment.hatenablog.com
参照元はとても王道的に計算してるんだけど、私のは手抜き。
コードはこちら。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub FakeCircling() Dim sh As Shape Set sh = Sheet1.Shapes.AddShape(msoShapeOval, 100, 50, 10, 10) Dim shadow As Shape: Set shadow = sh.Duplicate shadow.Visible = msoFalse shadow.Left = sh.Left shadow.Top = sh.Top shadow.IncrementTop 100 Dim sh2 As Shape Set sh2 = Sheet1.Shapes.Range(Array(sh.Name, shadow.Name)).Group Do Sleep 1 Application.ScreenUpdating = False sh2.IncrementRotation 5 Application.ScreenUpdating = True DoEvents Loop End Sub
ちゃんと動作してる。
何してるかというと。。
対角線上に見えない影シェイプをつくってグルーピングしてRotate命令で回してる。