変数って何?(3)::システムトレード完全攻略(エクセル活用術)

システムトレードのトップへ > VBA > VBA入門  >変数って何?(3)

変数って何?(3)

プログラミング(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」と記述され、宣言しない変数は使えなくなります。

option_explicit by システムトレード


では、使用例からの変数名を使って、スクリプト文の先頭あたりで宣言します。

宣言文は「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バイト+文字列の長さあらゆる種類の値を保持


セルレーダー最新版ダウンロードした(^▽^)?

人気ブログランキングへ





1位取れたら未公開プログラム沢山吐き出すので応援のポチ2つしてね(≧ω≦)

投稿者 システムトレーダー壱式 : 2008年04月14日 00:45



トラックバック

このエントリーのトラックバックURL:
http://systemtrader.info/cgi/mt/mt-tb.cgi/17

コメント

コメントしてください




保存しますか?


//-->