エクセル奮闘記-12 --- VBAの基礎まとめ-01
お元気でしょうか?
エクセルの記事も継続してブログに掲載することにしました。
わかりやすい記事にしたいのですが、今の僕のレベルではわかりやすく説明できてないと思います。
僕自身も勉強中ですし、ブログページのレイアウトが思ったより見にくいです。なので、マクロを勉強中の方、興味のある方、軽く参考程度でお願いします。慣れたら、何か工夫して見やすくしたいと思っています。
追記
劇場アニメのスケジュールは明日以降にアップします
--------------------------------------------------------------------
VBA基礎のまとめ直し
VBA:企業内のXML webサービス、業務システム開発のプログラミング言語として利用される
Windowsの設定を変更、インターネットに接続して、データを自動収集する事も可能
イベント駆動型の言語
ボタンが操作されるまでは実行されない
マクロを悪用すると、コンピュータに重大な被害を及ぼす悪質なウイルスを作成することも可能
→マクロの実行でWindowsの設定を変更することができるから
マクロの名前に使いない文字
・「?」、「*」、「-」、などの記号 例外)「 _ 」(アンダーバー)は使える
・名前の先頭の数字も不可 例外)先頭でなければ数字は使える
XLSTARTフォルダー
「XLSTART」フォルダー内のブックにマクロが含まれている場合、それらのマクロはセキュリティレベルに関係なく実行できる
ーーーーーーーーーーーーーーーーーーーー
繰り返しの定型文
iが1~5まで変化する時の定型文
Sub Macro1()
Dim i As Long
For i = 1 To 5
Next i
End Sub
ーーーーーーーーーーーーーーーーーーーー
Sub Macro1()
Dim i As Long
For i = 1 To 5
If セル > 500 Then
セルの文字を太字にする
End If
Next i
End Sub
ーーーーーーーーーーーーーーーーーーーー
Sub Macro1()
Dim i As Long
For i = 1 To 5
If Cells(i, 1).Value > 500 Then
'セルの文字を太字にする
End If
Next i
End Sub
ーーーーーーーーーーーーーーーーーーーー
わからないオブジェクトやプロパティをマクロ記録して、記録されたコードをヘルプで調べるとみんな言うが、、、、
ヘルプを見てもわからない意味がわからないことの方が多いが、一応、閲覧する習慣をつける
モジュールとプロシージャー
モジュールとは何か?
・モジュール=マクロのコードを記述する場所
オブジェクト=EXCELを構成する部品、VBAの操作対象(=動かされる側)
例)range, worksheet, EXCEL本体
・モジュールを収納できるオブジェクト
1)Workbook,
2)Sheet,
3)UserForm
オブジェクトに属さないモジュール
標準モジュール : 一般的にマクロは標準モジュールに記載する
クラスモジュール : クラスを定義するときに扱うモジュール
※クラス=特定の機能をまとめた標準モジュール
マクロの記述
・マクロはどのモジュールに記述してもかまわないが、基本的なルールがある
=標準モジュールに記載しない方が良い場合の注意点
①イベントを利用するマクロはオブジェクトモジュールに記述する
ワークシートをアクティブにするとアクティブシートに対して、イベントが発生するマクロを作ることが出来る = アクティブにするシートのモジュールにマクロを記載する
例)ワークシートを開いた時には必ずカーソルをA1に移動するマクロ
所定のワークシートに記載した方がいい
②上位オブジェクトを省略したときに意味が異なる場合がある
Range(”A1”).Value=100
・標準モジュールの場合 =アクティブシートの「A1」
・WorkSheetオブジェクトのモジュールに記載した場合 = 記載したWorkSheet
③宣言出来る変数などに制限がある
すべてのモジュールで使用するときは
広域変数(グローバル変数)の宣言をする
Public 変数名 As 変数の型
プロシージャー
プロシージャー=マクロの最小実行単位
プロシージャーの種類
Subプロシージャー 値(結果)を返さないプロシージャー
Functionプロシージャー 値(結果)を返す、実行した結果が変数として利用できる
Propertyプロシージャー 保留
Subプロシージャーを2回繰り返すことも出来る
引数=計算のもととなる数値や文字
Functionプロシージャーの例
ーーーーーーーーーーーーーーーーーーーー
Sub 消費税金額()
MsgBox 税込金額(ActiveCell.Value)
End Sub
Function 税込金額(数値 As Long)
税込金額 = 数値 * 1.08
End Function
ーーーーーーーーーーーーーーーーーーーー
プロシージャーの終わりのルール、書式
Subプロシージャーの場合
Sub 名前()
End Sub
Functionプロシージャーの場合
Function プロシージャ名(引数 As データ型) As 戻り値のデータ型
プロシージャ名 = 戻り値
End Function
別のプロシージャーを実行する
別のプロシージャーを実行するにはCallステートメントに続けて、実行したい、Subプロシージャー名を指定する ※Subプロシージャーを2回使える
ーーーーーーーーーーーーーーーーーーーー
Sub 時間MSG()
Call P33_時間
MsgBox ActiveCell
End Sub
ーーーーーーーーーーーーーーーーーーーー
Sub 時間()
ActiveCell.Value = Now()
End Sub
このあたりの理論とか座学はあまり必要ないかもしれません。
僕はほとんど丸暗記でやってきたので、あらためてまとめ直しているところです。
仕事でしぶしぶ勉強している人で、見て下さっている方、お互い、頑張りましょうね。