【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
皆さんこんにちは、エンジニアのIMMRです。
突然ですが、下記のようなシートを持つ、ブックにシートを追加・名前の変更・削除をしたいと思います。
図1サンプルブック
シート「A1」の右にシート「A2」を追加したい・・・
シート「C0」の左にシート「B1」を追加したい・・・
シート「C0」をシート「B2」に名前の変更したい・・・
シート「C1」を削除したい・・・
等などといろいろあると思います。
こういったシートの新規・名前の変更・削除といった方法を説明します。
シートの追加・名前の変更・削除を行うには、以下の手順が必要です。
①シート名を指定(どこに作成するのか)
②場所を指定(指定したシートの右か?左か?)
③作業を指定(追加か?削除か?)
④名前の変更(指定したシートを変更)
下記のようなシートがあったとします。
図2 サンプルシート1
そして、シート「A1」を指定したい場合は2つの方法があります。
その名の通り、直接記載します。
以下のような感じです。
Worksheets("A1")
シートの番号を記載します。シート番号とは、左から何個目なのかを記載します。
図2でいうシート「A1」は3つ目なので3になります。
Worksheets(3)
指定したシート名の左なのか、右なのか、を指定します。
指定したシートの左を指定します。
Before
指定したシートの右に指定します。
After
追加か削除を指定します。
指定したシートの追加をします。
Worksheets.Add
削除の場合
指定したシートの削除をします。
指定したシート名.Delete
ただし、シートを削除する場合、
毎回、削除を実行する時に「削除しますか?」と表示されるので不便です。
その場合、メッセージを抑止することができるのでその方法で行うことをおすすめします。
Application.DisplayAlerts = False
指定したシート名.Delete
Application.DisplayAlerts = True
Application.DisplayAlerts = Falseで確認メッセージを抑止します。
しかし、このままFalseの状態にしておくと
マクロが終了しても確認メッセージが抑止の状態になり、
Excelからさまざまなメッセージが表示されなくなってしまうので
FalseからTrueにして抑止状態をもとにもどすことが必要です。
名前を変更しますがシートの指定する方法が2つあります。
指定したシートの名前を変更します。
指定したシート名.Name = "変更したい名前"
ActiveSheetを使用して、シートを指定して名前を変更します。
新規(Add)で新規作成した直後の場合は、作成したシートがアクティブになっているのでそのまま使用できます。
ActiveSheet.Name = "変更したい名前"
今回サンプルで使用するのは図1サンプルブックでも使用したブックのシートです。
これにシートの追加・名前の変更・削除を行っていきます。
図3 サンプルシート
1.シート「C0」の左にシートを追加します。 ※ここでは、敢えて名前の変更を省きます。
2.3つ目のシート(「A1」)の右にシートを追加して、名前を「A2」にします。
3.シート「C1」の名前を「D1」にします。
4.シート「SS」を削除します。 確認メッセージは非表示にします。
シートの追加・名前の変更・削除を行うサンプルプログラムです。
Sub test()
Worksheets.Add Before:=Sheets("C0")
Worksheets.Add After:=Sheets(3)
ActiveSheet.Name = "A2"
Worksheets("C1").Name = "D1"
Application.DisplayAlerts = False
Worksheets("SS").Delete
Application.DisplayAlerts = True
End Sub
プログラム実行後の結果が以下になります。
図4 シート(実行後)
先ほどの実行前の
図3 サンプルシート
・シート「C0」の左に新しくシートが作成されています。 ※名前の変更とかを除いた場合、「Sheet1」とかで作成されます。
・シート「A1」の右に「A2」としてシートが追加されています。 ※シート「SS」が削除されているので2つ目の右に作成されています。
・シート「C1」からシート名が「D1」になっています。
・シート「SS」が削除されています。
以上により、ワークシートの追加・名前の変更・削除を行うことができました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート