ExcelでVBAを使ってマクロを作り、繰り返し作業を簡略化して、早く済ませたいと思った時、便利なのがマクロの記録機能ですよね。VBAに詳しくなくても簡単にマクロが作れます。
マクロの記録を使ってマクロを作り、活用しているうちに、あれ?エラーで動かないぞ?ということはありませんか?
その1つに、シート名を変えたことによって生じるエラーがあります。
このエラーのせいで、面倒な手作業に戻るのもまっぴらですし、また同じマクロを作り直すのもできれば避けたいところ。
今回は、シート名を変えてしまったことによって生じてしまったエラーの解消方法を紹介したいと思います。
この方法、実にシンプルで簡単です。しかも、今後VBAを使ってマクロを作っていく上で有効な方法ですので、是非対処法を身に着けてくださいね。
このページの中では、今回紹介するマクロを組み込んだExcelファイルをダウンロードできる
ようにしています。
これを使えば、一からExcelを作り込む必要もありませんよ。是非使ってみてくださいね。
では本編スタートです!
Contents
『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ファイルが下からダウンロードできます。
sheet_name.xlsm
sheet_name.bas
お好きな形式のファイルをダウンロードして、
実際に動かしてみたり、あなたの課題にあわせてExcelを
調整して作業時間短縮、効率化に役立ててみてください!
vbaファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。
最新情報をお届けします
Twitter でExcel GO! GO!をフォローしよう!
Follow @go_excelコメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。