ここからは実際にExcelVBAで「New JVData Explorer」を作っていきます。 |
1.まずExcelを新規で立ち上げて、Visual Basic Editor(VBE)を使えるようにします。
VBEはExcel VBAでソフト開発をする際に使うプログラミング・ツールです。
Excel2003以前とExcel2007以降ではVBEを設定する方法が若干異なります。
VBEの設定は、Excel 2010 / Excel 2007 / Excel 2003 を参考にしてください。
挿入した図はマウスを載せると手のひらマークに変わる図はクリックすると拡大します。 |
|
|
2.VBE画面で標準モジュールを挿入します。
プログラムコードを記述するために標準モジュールを1枚挿入(追加)します。
方法は、VBE画面のメニューから「挿入」→「標準モジュール」を選択すると左側のProjectウィンドウに”Module1”のように新たなモジュールが追加されます。実際にプログラム(コード)を記述する場所は右側の広い空白部分です。
右図はExcel2003の例ですが、Excel2007/2010も同様な操作でできます。 |
|
3.挿入した標準モジュールの名前を"mMod0"に変更します。
左のプロパティウィンドウに表示される(オブジェクト名)のところをダブルクリックすると"Moduel1"の部分が青く変わるので、"mMod0"(0はゼロ)に変えてください。
さらに右側のコード記述部分の一番頭に"Option Explicit"と記述しておいてください。(これを記述すると変数名をスペルミスしたときなどや、うっかり未定義の変数を使うと警告をしてくれます)
このOption Explicitはすべてのコードウインドウの頭に記述する癖をつけることをお勧めします。 |
|
もしプロパティウィンドウが表示されない場合は、「表示」→「プロパティウィンドウ」で表示できます。 |
|
4.標準モジュール(mMod0)にコードを記述していきます。
(1)まずは、ワークシートを28枚に増加するコードを作ります。
新規のブック(Excel)には通常3枚のワークシートがありますが、「New JVData Explorer」では28枚のワークシートを使います。いちいち手で追加するのは面倒なので、プログラムで一気に追加します。このコード自体は、実際の「New
JVData Explorer」では使いませんので、実行後は削除しても、そのままでもかまいません。
@とりあえず先ほどの"Option Explicit"と記述した下に1行あけて(リターンキーをおせば改行)、”Sub ワークシート追加”と記述してください。”Sub”と”ワーク”の間は半角スペースを入れてください。日本語部分は通常のワープロ感覚で記入してください。
”Sub ワークシート追加”と記述したところで”リターンキー”を一回押してください。
下図のように”Sub ワークシート追加”の後に( )と1行あけて"End Sub"が自動的に追加されます。
この"Sub"から”End Sub"の間が「ワークシート追加」というサブルーチンになります。
(もちろん、今は何も記述していないので、動きません) |


(注)Subというのはマクロ(プログラム)を意味します。Subの頭にPublicとかPrivateという言葉が追加される場合があります。
Public Sub(あるいは単にSub)・・・プログラム全体のどこからでも利用する(呼び出す)ことができるマクロ。
Private Sub・・・あるワークシートやモジュールの中でしか利用できないマクロ。
単にSubとした場合はPublic Subになります。
同様に一種の関数として機能するFunctionにもPrivate FunctionとPublic Functionがあります。Subは内部で何か作業をする機能、Functionはある結果を戻り値として返す機能のような違いがあります。 |
Aこの行間の空白部分に右のようなコードを記述してください。コピー&ペーストでも可能です。[ワークシート追加]マクロ
(アポストロフィー(’)の後ろの記述はコメントなので記述してもしなくてもかまいませんが、あるとプログラムの流れや意味を理解したり、後で思い出すときに便利です。)
面倒な場合は、コピー&ペーストで写しても結構です。コメント行が緑色に変わるはずです。
(参考)サンプルマクロのようにサブの先頭上部に[第2回]とか、この自作教室で説明する部分の回を表記していますので、後で見直すときに手掛かりにしてください。
|
(コード記述時のヒント)
Dim の行で記述するのは変数の定義ですが、ここは大文字・小文字の区別をして書いた方が判りやすいでしょう。
定義済みの変数をマクロの中で記述する場合は、小文字のみで記述しても、自動的に定義通りに大文字・小文字の区別で修正されます。 |
記述するコード[ワークシート追加]マクロ
'[第2回]
Sub ワークシート追加()
Dim ShtCount As Long 'シート数の変数
Dim p As Long
'ワークシートの数を取得してシート数変数に代入
ShtCount = Worksheets.Count
'ワークシートを28枚まで追加する
For p = (ShtCount + 1) To 28
Worksheets.Add after:=Worksheets("Sheet" & p - 1), Count:=1
Next p
End Sub
プログラムの説明
--------------------------------------------
ShtCount = Worksheets.Count
初期のExcelのワークシートの数をカウントして変数(ShtCount)に代入します。通常は3枚なのでShtCountの値は"3"になります。
---------------------------------------------
For p = (ShtCount + 1) To 28
Worksheets.Add after : = Worksheets("Sheet" & p - 1),
Count : = 1
Next p
For/Next ループでワークシートを4枚から28枚まで追加します。
Worksheets.Add 以下のコードは、(p-1)枚目の後(右)に1枚ワークシートを追加するという命令です。これで28枚まで繰り返すわけです。 |
またVBAが使う予約コードはインテリジェント機能で記述途中で自動的に選択可能なコードが表示されるので、正確なスペルを知らなくても記述が可能です(似た単語もあるので間違いやすいものもありますが)。
たとえば上記コードのWorksheets.Addの部分の入力時に、下図のように小文字でworksheetsに続いてドット(.)を記述すると、自動的にリストが表示されるので、AddをダブルクリックもしくはクリックしてTabキーで選択するとコードが自動的に記述され、予約語のWorksheetsも"W"が大文字に変換されます。詳しいことはVBAの参考書をご覧ください。 |
 |
記述が終わったら、早速動かしてみましょう。下図のようにタイトル部分のどこかを左クリックして、メニューの”Sub実行ボタン”(三角のアイコン)をクリックしてください。プログラムが動きます。
|
|
|
右図のようにワークシートが28枚になっていれば正常です。
Excelを「New_JVData_Explorer」という別名で保存しておいてください(次回以降は上書き保存でセーブしてください)。
保存を忘れるとExcelがハングアップしたときにプログラムが消えてしまう場合があります。長時間の努力が水の泡とならないように”プログラムを記述したら、動かす前にセーブする”ようにしたほうが安全です。 |
 |
VBE画面で見た場合、右図のようにプロジェクトウィンドウにSheetが28枚になっているのが分かります。
|
 |
(2)続いて、28枚のワークシートの名前を付ける別のプログラムを作ります([ワークシート名変更]マクロ)。
@先ほどのコードの下に右記のようなプログラムを追加記述してください。
プログラム(マクロ)のタイトルは”ワークシート名変更”とします。
中は、ワークシートの1枚目(p=1)には"Top"という名前を、2枚目なら"RA_RACE"、"3枚目には"SE_RACE"、28枚目は”初期設定”というように28枚全部の名前を記述します。これはワークシートのタブをダブルクリックして名前を変更するのと手間的には変わりませんが、練習のつもりで・・・ コード記述が済んだら忘れずに上書き保存を。 |
|
A先ほどのプログラムと同じようにタイトルのどこかを左クリックして、Sub実行ボタンでプログラムを動かしてください。右図のようにワークシートの名前が変わっていれば正常です。
VBEのProject Window側もシート名が変わります。
|

 |