Move Worksheet

  Excel VBO

名前のとおり、ワークシートを移動させるアクションです。
移動させるだけでなく、コピーすることもできます。

ただ、使い方にはちょっとクセがあるようなので解説します。

実験1. 同じブック内でシートを移動させる

以下のようなフローを用意します。

Move Worksheetの設定内容です。

デバッグしてみましょう。
結果は以下のとおりなのですが、3番目のシート(=Sheet3)と入れ替えるのかと思っていたら違う結果になりました。

なぜこうなるのか、ソースを追ってみました。

Move Worksheetのフローです。
ソース以外にも気になる部分はありますが、後述します。

DestinationPositionが0かどうかで分岐するっぽいですね。
0以外の場合は、DestinationPosition=シート番号になって、その番号の一つ前にシートが移動する仕組みになっているようです。

例えばDestinationPositionが3の場合は、2番目のシートに移動します。先ほどの例の結果もそのようになっています。

Move Worksheetのフローを見ると分かるように、Source Worksheetの値はシート番号でもOKです。
が、なぜか数字をパラメータに入れるとエラーになってしまいます。
型がテキスト型だから?

数字の後に半角スペースを入れるとうまくいきます。

つまり、Source Worksheetが「Sheet1」または「1 」どちらでも同じ結果になります。

実験2. DestinationPositionに0を入れて動かしてみる

DestinationPositionに0を入れて、シート移動とコピーをやってみます。

シート移動

結果は以下のとおり。シート移動なしです。

シートコピー

結果は以下のとおり。先頭にコピーされたシートが作成されます。

メモ

応用して「シートの順番をソートする」といった使い方もできそうですね。
(全シート取得してコレクションに格納 → コレクションをソート → ループの中でMove Worksheet)

LEAVE A COMMENT

CAPTCHA