VBA100本ノック 19本目:図形のコピー

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。
f:id:Infoment:20220204232800p:plain

オートシェイプのコピーということで、今回はDuplicateメソッドを使用する。
シート内のShapeをループで虱潰しにコピーする作戦だが、問題文にもある
とおり、入力規則のリストもこれに引っかかってコピーされてしまう。

そこで今回は、リストの名前決め打ちで、コピー対象から除外することにした。

Sub VBA_100Knock_019(ws As Worksheet)
    Dim Shape As Excel.Shape
    Dim CopiedShape As Excel.Shape
        For Each Shape In ws.Shapes
            If Not Shape.Name Like "Drop Down*" Then
                Set CopiedShape = Shape.Duplicate
                CopiedShape.Left = Shape.Left + Shape.Width
                CopiedShape.Top = Shape.Top
            End If
        Next
End Sub

なお、コピー直後のオートシェイプがどこに配置されるか、よく解らなかった。
そこで適当にコピーした後に、目的の位置に移動させることとした。


解答を実行した結果がこちら。
f:id:Infoment:20220204233506g:plain

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。