Excelのシート名を変更しても使用できるマクロの書き方とは?

スポンサードリンク

ExcelでVBAを使ってマクロを作り、繰り返し作業を簡略化して、早く済ませたいと思った時、便利なのがマクロの記録機能ですよね。VBAに詳しくなくても簡単にマクロが作れます。

マクロの記録を使ってマクロを作り、活用しているうちに、あれ?エラーで動かないぞ?ということはありませんか?

その1つに、シート名を変えたことによって生じるエラーがあります。

このエラーのせいで、面倒な手作業に戻るのもまっぴらですし、また同じマクロを作り直すのもできれば避けたいところ。

今回は、シート名を変えてしまったことによって生じてしまったエラーの解消方法を紹介したいと思います。

この方法、実にシンプルで簡単です。しかも、今後VBAを使ってマクロを作っていく上で有効な方法ですので、是非対処法を身に着けてくださいね。

このページの中では、今回紹介するマクロを組み込んだExcelファイルをダウンロードできる
ようにしています。

これを使えば、一からExcelを作り込む必要もありませんよ。是非使ってみてくださいね。

では本編スタートです!

スポンサードリンク

『Excelのシート名を変更しても使用できるマクロにする』には?まずは問題を整理しよう!

今回解決するのはシート名を変更してもマクロがエラーで使えなくならない方法。シート名を変更するとなぜエラーが起きるのかをまずチェックしておきましょう!

下の図のようなシート名のシートがあるExcelだったとします。

このシート上で、「マクロの記録」機能を使ってマクロを作ると、シートAを選択するときに、次のようにマクロが記録されます。

Sheets("シートA").Select

()の中の” “で囲まれた部分に注目してください。ここが、シート名「シートA」になっていますよね。

Excel側でシート名を変更した場合、上の図の部分の表示は変わりますが、残念ながらVBAで書いたプログラムは変更されません。(“シートA”)のままなんです。このため、マクロを実行しようとしたときに、シートAがないよ!ということでエラーになってしまうのです。

では、どう対処するか!

感のいいあなたはおわかりですね?

そう、” ”内の記述を現在のシート名に書き換えてあげればいいのです!こうすればエラーが解消され、今までどおりにマクロが実行されます。

 

しかし!

次にまたシート名を変えてしまったときどうなるか?そうです。またエラーが発生します。シート名を変えるたびに、プログラムを書き直せばエラーは回避出来るのですが、この作業も面倒ですよね。ですので、もう一つ進んだ対処法を覚えてしまいましょう!

『Excelのシート名を変更しても使用できるマクロにしたい!』解決の方針をチェック!

VBAを「マクロの記録」を使って書かせた場合のシートの選択は、

Sheets("シートA").Select

となるのでしたね。この方法でシート名を指定すると、シート名を変えるたびに、この部分を書き直すはめになります。

そこで利用するのが、次の書き方!

Sheets(1).Select

あれ?別に変わってないじゃない!と思ったあなた!よく見てみてください。()内の” “がなくなっています。そして、()の中が数字になっていますよね!

ここであなたは、この数字が何なのかとお思いになったことでしょう。

この数字の意味がわかれば、あなたは自由にVBA(マクロ)を使いこなす、マクロマスターに近づけます!

では、上で紹介したサンプルのExcelのエディターの表示をみてみましょう。

「シートA」という名前のシートに「Sheet1」、「シートB」という名前のシートに「Sheet2」、「シートC」という名前のシートに「Sheet3」と表示されていますよね。

先程指示したSheets(1)の1は、実はSheet1の1なんです。この番号は、シート名(例えばシートA)を変更したとしても変更されません。

ということで、Sheets(1).Selectというように、番号を指定してシートを選択すれば、シート名が変更されたとしても、エラーが生じることはなくなるわけです。

ですので、シートの選択に関するVBAの記述は、この方式をお使いになることをオススメします。

また、この表記には便利な使い方があります。

シートAで計算して、その後同じことをシートBでやって、さらにシートCで実施するというような時に真価を発揮します。

Sheets(1).Selectの()内の1をiなどの変数にして記述し、For Next分などでiを変えてあげれば、同じ作業をシートを変更しながら実行できるんです。

これを使ったマクロは別の記事で紹介したいと思いますが、とにかく応用も効きますので、シートの選択については、Sheets(1).Selectというような、シートの番号を使う方式が良いですよ!

『Excelのシート名を変更しても使用できるマクロにする』Excelマクロのサンプル

ではExcelのシート名を変更しても使用できるマクロの、具体的な記述をみていきましょうね!VBAで書いたリストは次の通りです!

Attribute VB_Name = "Module1"
Attribute VB_Name = "Module1"
'***********************************************************
'** 仕事サクサク!定時退社のために EXCEL GO! GO!
'** (URL:https://excelgogo.net/)
'** 是非ご活用ください♪
'***********************************************************
Sub Sheet名の指示1()
'
    Sheets("シートA").Select
    Range("A1") = 1
    Sheets("シートB").Select
    Range("A1") = 2
    Sheets("シートC").Select
    Range("A1") = 3
'
End Sub
'***********************************************************
'** 仕事サクサク!定時退社のために EXCEL GO! GO!
'** (URL:https://excelgogo.net/)
'** 是非ご活用ください♪
'***********************************************************
Sub Sheet名の指示2()
'
    Sheets(1).Select
    Range("A1") = 1
    Sheets(2).Select
    Range("A1") = 2
    Sheets(3).Select
    Range("A1") = 3
'
End Sub


Sheet名の指示1()とSheet名の指示2()という2つのマクロが記述されています。1つ目は「マクロの記録」で使われる方式でシートを指定するもの。もうひとつは今回紹介した方式でシートを指定するものです。

どちらもマクロを流した後の結果は同じですが、下のものはシート名を変えてもエラーが生じず動きます。

是非違いを覚えて下さいね。

まとめ

今回は、『Excelのシート名を変更しても使用できるマクロ』の作り方を紹介しました。マクロの記録を使ってマクロを作った場合、

Sheets("シートA").Select

というように、シート名を使ってシートを指定していたところを、

Sheets(1).Select

と、シートの番号を使って指定するところがポイントでした。

下で紹介するExcelファイルも是非お使いくださいね。プログラムを書く時間も短縮できると思います。

 
ある機能をExcelで実現するとき、その方法は一つだけとは限りません。

ExcelVBAで使用できる機能をフルに使ってシンプルに作ることもできます。ただこれにはそれなりの勉強が必要。すぐには使えず、今すぐ問題を解決したいとい状況にはあいません。ですので、このブログで紹介するマクロは、できるだけ簡単なもの、VBAにそう詳しくなくても読めそうなもの、手を加えやすいものになるように心がけています。

マクロって難しそう、と敬遠していた方にマクロって意外とお手軽ね!と感じていただき、これを応用すればあの作業も自動化できるかも!と次のステップやアクションにつなげていただければと思います。

Excelのスキルを一気に向上させて、ライバルに差をつけたい、仕事を一気にさばいてスピードアップしたい、スキルを身に着けて転職や就職に役立てたいと思ったあなた!ぜひ下のボタンをクリックしてください!
募集締め切りが迫っているので、期間限定で「短期間で実力の向上が見込めるお手頃な方法」を紹介していますよ。

ホントは管理人Goも早く知りたかった!オンラインブートキャンプで、
見やすいデータをより早く仕上げる Excel術をマスターしよう!

 

『Excelのシート名を変更しても使用できるマクロ』Excelサンプルをプレゼント

今回紹介したシートを

Sheets(1).Select

という形式で指定し、シート名を変更しても使用できるマクロを組み込んだExcelファイル、basファイルが下からダウンロードできます。

お好きな形式のファイルをダウンロードして、
実際に動かしてみたり、あなたの課題にあわせてExcelを
調整して作業時間短縮、効率化に役立ててみてください!

vbaファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。


 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でExcel GO! GO!をフォローしよう!

スポンサードリンク

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

話題をチェック!

  1. 2018-11-1

    Excelマクロ(VBA)で複数のシート上のグラフに同一の処理を行うには?

    Excelファイル内に複数のシートがあり、この中にグラフがいくつも入っているとします。 これら…
  2. 2018-9-30

    Excelの関数を使ったデータ比較法!INDIRECTとMATCHを活用する!

    最新データと一週間前のデータにどんな違いがあるのか比較してチェックしたい! でも、ひとつひとつ…
  3. 2018-7-16

    Excel マクロ(VBA)でグラフ(散布図)を大量自動作成!

    Excelはグラフを簡単につくれるのも魅力ですが、つくらなければいけないグラフが多いと、この作業も大…
ページ上部へ戻る