システムトレード用の開発ツールです。エクセルのVBAを駆使して最高のパフォーマンスを目指します。基本は無料
プログラミング(VBA)を知らない人でも、変数については算数や数学で習ったと思います。変数とは簡単に言えば「値を入れておくための箱」のようなものです。だいだいの入門書は変数=箱と説明しています。
変数の説明時に必ず出てくる「代入」とか「数学的等式」とかの問題点は後ほどにしておき、まずは基本から。
算数や数学の場合、変数名は「x」や「y」、「a」や「b」など単純な1文字で表すことが多かったと思いますが、プログラミングの場合は使う変数の数も、プログラムの量に比例して増えていくので、複数の文字を使った、もっと分かりやすい名前をユーザー自身が考えて、つけるのが一般的です。特にVBAは日本語の変数もOKなので、膨大なプログラムを組み上げる時に大変重宝します。
では、何でもOKかというと誰が見ても分かるように又、後で自分が何をしたかったプログラムがすぐ分かるように、次の3点くらいは守りましょう。
1.変数の役割、意味が分かる名前をつける
2.プロシージャーのタイトルやVBAのキーワードと一致しない名前をつける
3.どのような値を格納するための変数なのか連想できる名前をつける
可能な限り、変数の意味や役割が分かる名前にしておかないと、後で訂正したりする時に作業効率が悪くなります。
一般的に、先頭に「my」をつける方法と、「その変数のデータ型」をつける方法があるようです。この方法だと、VBAのキーワードと一致は絶対しませんし、かつ、他人が見て、自分が後から見ても分かる変数を簡単に作れるというメリットがあるからです。
使用例:my何々
myShName,myPostCode,myBkName,myDate,myLastColumn....
使用例:データ型何々
intX,StrName,Rgbox,LngColor,StrFlieName....
日本語の変数名は一般的に無作法だといわれていますが、個人で使用する場合や、プロでもなり限り、私はOKだと思います。メリットはローマ字で変数名をいちいち考える手間が省けるし、後で確認するのも楽。デメリット漢字は2バイト文字なのでその分メモリーが消費するくらい?後かっこ悪い、素人ぽい…etc 私は個人使用がほとんどなので使いまくってます。
使用例:
最終行、先頭行、データ範囲、商品コード、顧客名・・・
また、使う変数は文頭で通常宣言します(Dim ○○○○)。 実はVBAなどのBASIC系は宣言しなくてもプログラム中で使用は可能です。たまに宣言し忘れた変数でもプログラムが正常に動きます。しかしスペルミスなどをしてもエラー表示されないので、デメリットのみです。ですので、あらかじめ宣言されていない変数はエラーとみなすように設定しておきます。
VBAの編集画面のツールから入り、オプション→編集の「変数の宣言を強制する」の項目をチェックします。これでモジュールの先頭に必ず「Option Explicit」と記述され、宣言しない変数は使えなくなります。

では、使用例からの変数名を使って、スクリプト文の先頭あたりで宣言します。
宣言文は「Dim」で始まります。
Sub ●●●●●()
Dim myShName
Dim myPostCode
Dim myDate
Dim Rgbox
Dim intX
Dim 最終行
Dim 顧客コード
こんな感じです。 さらに通常は、「As」 キーワードを使い、データ型も一緒に指定しておきます。データ型を指定することにより、プログラムミスを避けるためです。データ型とはその変数に入るべきデータの種類を指します。例えば、ある変数に文字を入れたいならstring型、整数ならinteger型とかです。型を指定するとメモリーの消費を抑えれるというメリットもあります。デメリットはないので必ず宣言します。
Sub ●●●●●()
Dim myShName As String
Dim myPostCode As Integer
Dim myDate as Date
Dim Rgbox As Range
Dim intX As long
Dim 最終行 As Integer
Dim 顧客コード As Integer
となります。例えば「myShName」という変数は「String」型なので、その変数に代入出来るデータは文字列のみになります。数字等を入れるとエラー表示されます。変数「myDate」は日付型であると分かります。顧客コードは-32,768から32,767の整数以外だとエラーがでます。
主なデータ型の一覧です。ちなみに何もデータ型を指定しないとバーリアント型になります。他に比べてメモリーの消費が大きいのに注目してください。22バイトです!!!だかが、22バイトですが、それを1万回セットとかだと実行速度に大きな差がでます。またVBAは実行速度が遅い、すごく遅いので1バイトでも許す範囲内でバイト数が少ないデータ型を選択します。
尚、余談ですが、私はInteger型(2バイト)は使いません。Long型(4バイト)を使っています。これも何かのHOWTO本で実はLong型(4バイト)の方が相性?がいいらしく実行速度が早いと知ったからです。消費メモリーが少なさを意識して、常にデータ型を指定しています。 最後にデータ型の一覧です、参考にしてください。
| バイト型(Byte) | 1バイト | 0から255の正の整数値を保存 |
| ブール型(Boolean) | 2バイト | TrueまたはFalseを保持 |
| 整数型(Integer) | 2バイト | -32.768~32.767の整数を保持 |
| 長整数型(Long) | 4バイト | Integerで保持できない桁の整数を保持 |
| 通貨型 | 8バイト | Longよりも桁の大きな小数点を含む数値を保持 |
| 単精度浮動小数点数型(Single) | 4バイト | 小数点を含む数値を保持 |
| 倍精度浮動小数点数型(Double) | 8バイト | Singleよりも桁の大きな小数点を含む数値を保持 |
| 日付型(Date) | 8バイト | 日付と時刻を保持 |
| 文字型(String) | 10バイト+文字列の長さ | 文字列を保持 |
| オブジェクト型(Object) | 4バイト | オブジェクトの参照を保持 |
| バリアント型 | 22バイト+文字列の長さ | あらゆる種類の値を保持 |

投稿者 システムトレーダー壱式 : 2008年04月14日 00:45
このエントリーのトラックバックURL:
http://systemtrader.info/cgi/mt/mt-tb.cgi/17