ブックを作成するマクロを作成しよう」と「エクセルでシート作成するマクロ(ワークシート追加)」の記事を通して、ワークシートの枚数を指定してブックを作成するマクロを作成してきました。しかし、今の段階では、指定したワークシートの枚数によって、エラーが発生します。今回は、このエラーが発生しないようにマクロを改良しながら、ワークシートの主要なメソッド、VBAの基本構文を紹介します。

これまで作成してきたマクロ

これまで作成してきたマクロでは、セルA5に入力された枚数のワークシートを含むブックを作成し、セルA2に入力された名前をブック名にしてCドライブに保存するマクロでした。ポイントとしては、新規作成したブックには、既に3つのワークシートが含まれているため、指定されたワークシートの枚数から「3」を引いた枚数分だけワークシートを追加する点がありました。

現段階では、ワークシートの枚数で「3」以下の数値を指定すると、追加するワークシートの数が「0」、またはマイナスの数値になってしまうため、エラーが発生します。


そこで、指定されたワークシートの枚数によって違う処理を実行するようにマクロを修正します。

条件によって処理を変えるには?

記述されたステートメントは、基本的に上から順番に実行されます。この中で、条件によって処理を変えたい場合は、「Ifステートメント」を使用します。

ある条件を満たした場合だけ処理を実行させる場合は、「If」の後に実行する条件を記述し、「Then」と「End If」の間に実行させる処理を記述します。


条件を満たさない場合に実行させたい処理を記述するには、「Else」を記述して、その後に処理を記述します。たとえば、「条件Aの場合は処理B、それ以外の場合は処理Cを実行する」といった処理を実行するIfステートメントは、次のように記述します。


また、最初の条件を満たさない場合について、さらに分岐する条件を増やす場合は、「ElseIf」と記述して条件を追加し、「Then」の後に処理を記述します。たとえば、「条件Aを満たす場合は処理B、条件Aを満たさない場合のうち、条件Cを満たす場合は処理D、それ以外の場合は処理E」といったIfステートメントは、次のように記述します。
※条件Aも条件Cも満たさない場合に何も実行しない場合は、「Else」と「処理E」を記述する必要はありません。


今回のサンプルで記述するIfステートメント

今回のサンプルでは、まず、追加するワークシートの数が「0より大きい場合」だけ追加処理を実行させる必要があります。したがって、「Sheets.Add Count:=SheetAddCount」部分を次のように修正します。これで、ひとまず、エラー発生を防ぐことができるようになりました。


続いて、追加するワークシートの数が「0」以下の場合を考えてみましょう。追加するワークシートの数が「0」の場合とは、セルA5(ブックのワークシート数を入力するセル)に「3」が入力された場合のことで、ワークシートの増減は必要ありません。また、追加するワークシートの数が「-1」の場合とは、セルA5に「2」が入力された場合のことで、ワークシートを1つ削除する必要があります。同様に、追加するワークシートの数が「-2」の場合とは、セルA5に「1」が入力された場合のことで、ワークシートを2つ削除する必要があります。

したがって、先ほどのIfステートメントに「ElseIf」を追加して、追加するワークシートの数が「-1」と「-2」の場合だけ、ワークシートを削除する処理を実行するようにします。条件が2つあるので、2つの「ElseIf」を記述します。


これで、条件分岐の骨格ができました。

>続いて、ワークシートを削除するマクロを作成しましょう!