前回までのはこちら
まず、EXCELでは複数のブックを同時に開くことができる。
1つのブックは Workbookオブジェクト です。
現在EXCELで開いているすべてのブックは、Workbookコレクションです。
また、空の新規ブックを挿入するには Addメソッドを実行します。
既に存在するものを開くときは Openメソッドを実行します。
では試してみましょうwww
上のほうは新規のブックの挿入
下は名前のブックが存在したら開くプログラムです。
(今回は当然存在しません(笑))
結果はこんな感じです
新しくもう1枚開かれます
もう一つのはこう表示されます。
続いてブックを保存するプログラムに移ります。
ブックを上書き保存するときは Saveメソッド
名前を付けて保存の場合は SaveAsメソッド
今回は実行するとこのような画面が出ますが、終了ボタンを押してください。
デバッグボタンを押してしまった場合は実行→メニュー→リセットを
また、どのボタンがクリックされるかは誰にも予測はできないのでエラーを防げませんが、エラーを無視することはできます。
それには On ErrorステートメントにResumeNextというキーワードを付けた命令ですが それについてはVBAスタンダードで学習します。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ブックを閉じるときは Closeメソッド を実行します。
こんな感じにプログラム完成です。
実行するとこのような表示が出ますが今回は保存しないをクリック
そうするとEXCELのワークシートも閉じられますね。
続いて複数のブックの操作です。
任意のブックを開くときは Activateメソッドを実行。
書式は 表示したいブック.Activate です。
次にワークシートについてやっていきます。
挿入するときはブックの時と同じように Addメソッドを実行します。
シートを挿入するとその挿入したシートがアクティブシートとなります。
で、これを実行するとこうなります。
ハイ( ^ω^)・・・間違えて二回も実行してしまったのでこうなりますwww
まだまだ続きますが、シートを開く方法は2つあります。
Selectメソッド と Activateメソッド です。
書式は
開きたいワークシート.Select
開きたいワークシート.Activate デス。
シートの名前を変える
ワークシートの名前を変えるには Nameプロパティを使います
任意のワークシートにどんな名前が設定されているかを次のように所得することもできます。
ここでちょっと補足~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
名前に設定できない文字は、
:コロン ¥円記号 /スラッシュ ?疑問符
*アスタリスク [左角括弧 ]右角括弧
です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
今回最後にこんなプログラムを‥‥
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
書式としては、
Beforeで指定したワークシートの左、Afterで指定したワークシートの右にコピーされます。
ワークシートの名前は便宜的に Sheet1(2)などとつけられます。
Before, Afterを同時に指定はできません。
とりあえずこんな感じのプログラムに・・・
実行するとこのようになります。
Moveメソッドもやってみます。
動かしてみると…
こうなりますwww
続いてシートの表示と非表示
ワークシートを非表示するには、Visibleプロパティ にFalseを設定する
再表示するにはTrueを設定します。
先ほどの Sheet1 を非表示にしてみます。
これを実行すると・・・・・
Sheet1がなくなりましたね。
再表示もしてみます。
続けて削除に移ります。
削除はDeleteメソッドです。
アラートが出るとめんどくさいのでDisplayAlertsプロパティに Falseを設定します。
実行すると・・・・・・・
Sheet3が削除されましたwww
ここまでで9章終了です。
======================================デバッグ
プログラムの初心者の方のために一応説明を書いておこうと思います。
デバッグとは、
プログラムに潜むミスを見つけ出してそのミスを修正する作業
文法エラーは、VBAの書式や構文が誤っているエラーです。
例えば
Range("A1)=164 などです。
論理エラーは、VBAの文法的には正しいけど論理的に間違ってるというミス。
例えば次のプログラム
____________________________________________________________
Sub Sample()
Dim i As Long
For i = 1 To 3
Cells(i,1)= Worksheets(i).Name
Next
End Sub
______________________________________________________________
ワークシートが2枚しかない状態で実行するとエラーになります。
エラーが発生すると上のような表示が出てきます。
デバックする場合はデバックボタンをしない場合は終了ボタンを押してください。
デバックボタンを押した場合
黄色の部分が実行できなかった部分で、マクロが一時停止します。
こうした状態をデバックモードといいエラーの原因を調べられます。
続いて
イミディエイトウィンドウ?
プロパティ、変数の内容 実行途中のマクロに関する情報を表示したり、任意の命令を実行できるウインドウです。
イミディエイトウインドウはVBAの初期状態ではコードウインドウの下部に表示されてます。ダブルクリックすれば移動できますよ(*^。^*)
あと、イミディエイトウインドウは、大文字と小文字は区別されません。
以上 マンタの補足でした~~~~~~~~~~~~~~~~~~~~~~~~~~
実際こんな風に表示されますね。
次にマクロを一時停止する機能を見ていきます。
設定の仕方
設定した位置にカーソルを移動し、デバックメニューからブレークポイント設定/解除をクリックすると下の画像のように茶色に反転!!
マクロを再び実行すると
マクロの実行を中止する場合は 実行 → メニュー → リセットを実行するか上の四角い青色のリセットボタンを押してください。
ブレークポイントの解除は設定されている行にカーソルを合わせて
デバック → メニュー → ブレークポイント設定/解除 かF9を押します。
Stopステートメント
マクロを一時停止させデバックモードにする命令です。
?i の下には実行するとiに格納されている数が入ります。
自分が予想するとおそらく3が入る気がしますが‥‥
そもそもウォッチウインドウとは何か?
マクロ実行中に変数やプロパティの内容などを監視できる機能。
いわゆる人間社会の監視カメラ・・・・・・・!
では、はじめていきます。
プログラムはできたので ウォッチウインドウ を開いてみましょう。
表示→ウォッチウインドウで表示されます。
イミディエイトウインドウと同じくダブルクリックでフローティングに切り替えることができます。
ウォッチの追加をクリックするとこのような画面が出るので、
式のところに i=6 プロシージャを先ほど作ったプログラムを選択
式がTrueの時に中断を選択してOK
するとこのようになります↓
で、ウォッチを削除するときは右クリックでウォッチの削除を選択するだけです。
続いてステップ実行
ステップ実行とはマクロを1行ずつ実行する機能です。
先ほどのプログラムを使います。F8を押すと1行目が黄色くなりますね
続けて何回かF8を押していき黄色いのが表示されなくなるまで実行します。
ステップ実行には3つあります
ステップイン ステップオーバー ステップアウト
======================================
●実行 メニュー → Sub/ユーザフォームの実行 をクリック
●ツールバーの Sub/ユーザフォームの実行 ボタンをクリック 👈これが一番楽
●F5 キーを押す
引数を受け取るプロシージャーは直接実行できない。
例えば
__________________________________
Sub Sample()
Cell SampleN("WWW")
End Sub
Sub Sample0(tmp As String)
MsgBox tmp
End Sub
___________________________________
Sub Sample()のプログラムは実行できますが、
Sub Sample0内にカーソルを置いて実行することはできません。
続いてマクロダイアログボックス
EXCELのワークシートを表示している状態でマクロを実行したい場合は
マクロダイアログボックス を使います。
表示の仕方は、表示 タブ⇒マクロ グループ⇒マクロの表示 ボタンをクリックするか Alt +F8 キーを押します。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EXCEL2003では・・・ツール メニュー マクロ マクロをクリックするか、
Alt +F8 を押します。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
こんな画面が出てきます。
リストで選択したマクロを実行します。
リストで選択したマクロをステップ実行します。
VBEを起動してリストで選択したマクロを表示します。
ボックスに入力した名前のプロシージャを作成します。
リストで選択したマクロを削除
ダイアログボックスを開いてプロシージャーのコメントやショートカットキーを編集します。
選択したブック内に保存されているプロシージャーがリストに表示されます。
マクロオプション ダイヤログボックスでマクロにショートカットキーを設定できます。
EXCELに設定されているのと同じのを設定するとEXCELの標準キーよりもマクロに設定したショートカットキーが優先されます。
解除するには、マクロオプション ダイヤログボックスでショートカットキーボックスを空欄にしてOKボタンをクリック
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
まずはEXCELを立ち上げて・・・・・・・・
開発タブ ⇒ コントロールグループ ⇒ 挿入をクリック
ハイ初タブが表示されてないという人は、Office ボタンをクリックして
EXCELのオプション ボタンをクリックし、基本設定の開発タブをリボンに表示する
オプションをオンにする。
詳しくはこちらに表示の仕方が載せてありますのでご覧ください。
続けてフォームコントロールクリック
クリックするとマウスが+の形になるのでドラッグしてボタンを作成します。
同時にマクロ登録のダイアログボックスが表示され今配置したボタンにマクロを登録できます。
例えばこんなボタンを作ってみました。
登録方法はボタンを右クリック マクロの登録 プロシージャーを選択 マクロの保存先を選びOKをおします。
では、ボタンをクリックしてみます。
正しく動けばセルAの10段目までにoooと入力されるはず・・・・・
ハイ。出てきましたね。
次にボタンのサイズなどの変更について。
右クリックで編集できます。
①操作が簡単
マウスでボタンをクリックすることはパソコンの初心者でもできますね。
②マクロの内容を伝えやすい
例えば このシートを印刷 というボタンがあれば 押せば何が起こるかわかりますね。
処理に合わせてボタンを配置することでユーザーは目的のマクロを確実に実行できます。
③アクティブシートを特定しやすい
ボタンが配置されているワークシートは必ずアクティブシートになります。
①ボタンを配置するスペースが必要
②大量のボタンは操作性が悪くなります
大量のボタンを配置する場合は、ボタンの大きさや色をを変えるなどして、グループ分けを検討しましょう。
③他のワークシートから実行できない
ボタンを操作するには、ボタンが配置されているワークシートを開かなければいけません。
ワークシートの数が多いときなど、マクロを実行するためにワークシートを切り替えるのは面倒ですね。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
メニュー/ツールバーに登録(EXCEL2003)からはじめていきます。
EXCEL2003までのバージョンにはメニューバーとツールバーがあり、
メニューバーやツールバーからマクロを実行できます。
マんタの補足~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EXCEL2007ではメニューバーとツールバーは廃止されました。
登録の仕方は後程説明します。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
登録の仕方2003
写真が汚くて申し訳ないのですが…
このプロシジャーを例にします
続いてツールバーへの登録の仕方をやっていきます。
基本的にメニューへの登録と一緒です。
画像がきれいに撮れてなくてすみません(´;ω;`)
次にブックにツールバーを添付する
新しく作成したツールバーはブックに添付ができます。
マクロを記述したブックに、そのマクロの実行するためのツールバーを添付しておけば、どのEXCELでブックを開いてもマクロを実行できます。
メニューやツールバーにマクロを登録するメリット&デメリット
メリット
①どのブックでも利用できる。
②マクロで操作できる
メニューやツールバーをマクロ操作することもできます。
ブックを開いたときに専用のメニューを追加し、ブックを閉じるときに専用メニューを除去するような仕組みもできます。
デメリット
①マクロの実態と切り離されます。
メニューバーやツールバーはEXCELが管理している。
メニューバーやツールバーはBook1.xls開いてなくても操作可能なので、
開いてないときに実行するとマクロが記述されたブックを開いて実行しようとします。
②うっかり消されてしまう
ワークシート上に配置されたボタンは明示的な命令でない限り削除できません。
一方メニューバーに追加したメニューはユーザー設定ダイアログボックスのリセットを押すとすべて初期化されます。
ユーザーがうっかり消してしまうこともありますので・・・
最後にクイックアクセスツールバーに登録する方法
自分の下手な説明よりここを見たほうがわかりやすいと思います・・・・
ではこんなプログラムを作ってみます
☆もしセルにALISと入力されていたらCells(i,1)にマんタと入力し
それ以外だったらCells(i,2)にエラーと入力しましょう。
そしてそのプログラムをボタンで 動くようにしようという問題。
ちなみに IFステートメント For.....NEXTステートメントを使います。
で、プログラムはこんな感じになりました
EXCELのほうはこんな風に記述しておきます。
ボタン名は今回マンタのボタンとでもしておきますwww
では、押してみます。
こんな結果になりますねwwww
さて、ここまで EXCELVBAベーシック を公開してきましたがどうでしたか?
======================================
ここからは自分がVBAを学んで得たものや勉強の仕方を書いていきます。
で試験があるのですが試験の内容は、
①問題数は、40問前後
②選択式問題
③時間は50分
④合格基準は650~800点(1000点満点)以上の正解率
⁂問題の難易度により変動WWWW(なんでやねん!)
受験料は
一般 12000円 税抜き 今はもう少し高いかも?
割引 10800円 ⁂VBAエキスパート割引受験制度を利用した場合
これが合格証書デス
で、勉強の仕方はひたすらテキストを読み直し
模擬テスト問題を何回もやり直し、3回目ぐらいでようやく合格しましたね。
1年ぐらいかかりましたがしかもクリスマスイブ前日!!!!!
この時思いました。自分にとって最高のクリスマスプレゼントだったなぁ・・・・・と。
(自分は富士○○○○で勉強してこの資格を取得しましたね)
合格証書は合格してから2週間後に来るということなので・・・年明けでしたね。
でしばらく休んで就活を何件かやったんですが・・・効果なし( ^ω^)・・・
50件ぐらいやって0
と、当時は思いましたね。
今思えばALISに公開するため?
(いやいやいやいや・・・・そんなはずはない気がする。( ´艸`))
そのあとしばらくしてJavaを学びましたね。
まあ今回の話はここらへんでしまいにしておきましょうかね。
ここまでVBAシリーズの記事をご覧くださった皆様ありがとうございました。
VBAシリーズは今回でおしまいですがまた何らかの記事を書く予定なのでよかったらそちらもご覧ください。
質問等ありましたらコメント欄にお願いします。
答えられるかどうかわかりませんが‥‥
____________________
使用した参考書はこちら
VBAエキスパート公式テキスト
EXCELVBAベーシック
著者 田中亨
より