【入門編】【初心者向け】CorelDRAW VBAにおけるシェイプの選択状態を判定し、存在しない場合の例外処理を入れる基本構造 – CorelDRAW VBA解析バイブル

スポンサーリンク

CorelDRAW VBAの「選択状態」を制する!エラーを防ぐ鉄壁のコード術

こんにちは。CorelDRAWの自動化の世界へようこそ。
「マクロの記録」ボタンを押して作業を自動化するのは素晴らしい第一歩です。しかし、いざ自分でコードを書き始めると、必ず一度はぶつかる壁があります。

「何も選択していない状態でマクロを実行したら、エラーで止まってしまった」

これは、初心者から脱却しようとする誰もが通る「洗礼」です。なぜエラーが起きるのか、そしてどうすれば「壊れないコード」が書けるのか。伝説的な自動化の現場で培った、最も基本的かつ重要な「安全策」を伝授します。

—

なぜ「エラー」は起きるのか?

CorelDRAWのオブジェクトモデルにおいて、`ActiveSelection`(現在選択されているもの)にアクセスしようとしたとき、もし何も選択されていなければ、プログラムは「存在しないもの」を操作しようとして混乱します。

これが、おなじみの「実行時エラー」の正体です。
プログラミングの世界では、「ユーザーは何もしない(または間違った操作をする)生き物である」という前提でコードを書くのが鉄則です。

—

鉄壁のガード:`ActiveSelection.Shapes.Count` を使いこなす

エラーを防ぐための黄金律は、「操作の直前に、対象が存在するか確認する」ことです。そのための魔法のプロパティが `Shapes.Count` です。

基本的なコード構造

以下のコードをコピーして、標準モジュールに貼り付けてみてください。

Sub SafeShapeManipulation()
‘ 1. 現在の選択状態を確認する
‘ ActiveSelection.Shapes.Count は選択されているオブジェクトの数を返します
If ActiveSelection.Shapes.Count = 0 Then
‘ 何も選択されていない場合の処理
MsgBox “エラー:オブジェクトが選択されていません。” & vbCrLf & _
“何かシェイプを選択してから実行してください。”, vbExclamation, “操作の中断”
Exit Sub ‘ マクロを安全に終了させる
End If

‘ 2. ここからは「選択されている」ことが確定した安心な領域
‘ 例:選択された全てのシェイプを赤色に変更する
Dim s As Shape
For Each s In ActiveSelection.Shapes
s.Fill.UniformColor.RGBAssign 255, 0, 0
Next s

MsgBox “処理が完了しました!”
End Sub

コードのここがポイント!

  • `If ActiveSelection.Shapes.Count = 0 Then`: ここが門番です。「選択数」がゼロなら、その後の重い処理を行わずに門前払いをします。
  • `Exit Sub`: 「ここで処理を中断する」という命令です。これがあることで、エラーが起きるコードに到達することを物理的に防げます。
  • 安心な領域: `Exit Sub` を通過した後は、必ず「少なくとも1つ以上のシェイプがある」ことが保証されています。ここで初めて、本格的な処理を書くのがプロの流儀です。

—

初学者が陥りやすい罠:`ActiveSelectionRange` との関係

CorelDRAWのVBAには、`ActiveSelection` と似たものに `ActiveSelectionRange` があります。
実は、`ActiveSelection` は厳密には「現在の選択範囲」を指しますが、空の状態でアクセスすると例外(エラー)を吐くことがあります。

一方で、`ActiveSelection.Shapes` を使うと、選択が空であっても「Countプロパティ」で0が返ってくるため、上記のような `If` 文による判定が非常にやりやすくなります。初心者のうちは、まずは `ActiveSelection.Shapes.Count` で判定する癖をつけるのが一番の近道です。

—

まとめ:ここをクリアすれば、あなたはもう初心者ではない

今回紹介した「選択状態のチェック」は、どんなに高度なツールを作るときでも必ず最初に行う「防御的プログラミング」の基本です。

1. 「ユーザーは何もしないかもしれない」と疑う
2. `Count` で存在を確認する
3. `Exit Sub` で優しく中断する

この3つのステップを身につけるだけで、あなたの書くマクロの信頼性は劇的に向上します。「マクロが急に止まってイライラする」ことはもうありません。

さあ、次はどんな操作を自動化しましょうか?
この「安全な土台」さえあれば、どんな複雑なコードも怖くありません。自信を持って、創造的な自動化の世界を楽しんでください。応援していますよ!

タイトルとURLをコピーしました