定数の基礎をマスター

2 −1



次に、簡単な横文字に入って行きますが、基礎用語で、これからひんぱんに、出でくるので自然と身につきます。

ここからは、あなた自信も「モジュール」にコピーをして、実際に動かしてください。

マクロを実際に動かす場合 メニューから→「ツール」→「マクロ」→動かしたいマクロにカーソルをもって行き→「開始」

では、実践に入ります。どうぞ。

定数の記述方法

 定数そのものである数値を使用するには、基本的にはセルに記述するのと同じ形式で書き込めばよいでしょう。
また、文字列は、半角のダブルクォーテーション(”)で囲まれたもので、これもセル内での式の規則と同じです。
日付については、半角のシャープ(#)で囲って指定します。
たとえば、#96/8/25#は日付を示すDate型の定数になります。#平成6年8月25日#でも、時刻を示す文字列を#で囲ったものでもかまいません。
こうした定数そのものを表記したものを「リテラル」と呼びます。

日付型データの特徴              

Date型の定数や変数は、文字列のようにも利用できると同時に数値のようにも利用できます。

たとえば、次のような記述が可能です。

【コピー】さあ、実践してください。




 

MsgBoxは引数の内容をダイアログボックスに表示しますが、式を記述すると式の結果を表示します。
最初のダイアログボックスでは「96/08/25は誕生日」という文字を出し、次のダイアログボックスでは「96/09/04」つまり、8月25日の
10日後の日付が表示されます。

変数の定義と型
 実際に変数を使う方法を説明しましょう。その前に、変数名の規則をまず示しておきます。
これは変数名に限らず、プロシージャなどプログラムで定義するものすべてに共通です。

 名前付けの規則
   1.アルファベット、数字、漢字、ひらがな、カタカナ、アンダースコアからなる文字列で、このうち数字とアンダースコアは先頭の文字とし
ては使えない。空白やその他の記号は名前には使えない。また、大文字小文字の区別はされません
   2.既に使われている名前(たとえば、ステートメントや既定義のプロシージャ名など)は使えない
   3.長さは半角で255文字まで
   4.Functionプロシージャ名では、セル範囲と解釈できる文字列は使えない

 アンダースコア(_)は空白文字の代わりに使われます。たとえば、変数名にはその内容を連想できるような名前を付けることがよくあります。
「西暦で示した生年月日」を記録するような変数の場合、変数名はyでもかまいませんが、そうするとコメントで内容を記録しておかないと、
「yつて何だっけ?」となってしまいます。そこで、変数名として「birthday_by_Cristian」などを使う方法が考えられます。

 また、変数名に漢字なども使えますが、昔からの習慣で「プログラムはアルファベットで書く」となっており、いろいろなサンプルを見ても、
漢字の変数名は余り使われていません。また、当然のことながら、漢字の変数名はキータイプが面倒になります。
 

【コピー】さあ、実践してください。



Test2がChangeをプロシージャ呼び出し、その変数x、y、Zを指定した場合、たとえば、サブルーチンとしてのChangeステートメント内の引数x
は、プロシージャとしてのChange内では引数はaになります。
Xの値をaにコピーしたかのように見えるかも知れませんが、実際には違っており、以下のような処理を行います。
 Test2で変数x、y、ZをDimで用意していますが、このとき、xのデータを記憶する場所をバリアント型のサイズに合わせてメモリー内に確保します。

変数xに値を書き込むことは、その確保したメモリーにデータを書き込むことになります。
また、変数xから値を読み出すというのは、メモリーの値を取り出すことなのです。




定数定義

 プログラム中では、定数がいろいろな場面で出てきます。
たとえば、1年の日数365日という定数もありますし、シート名「sheet1」という文字列定数もあるでしょう。
こうした定数はプログラム中にそのまま記述してもかまいません。
しかし、定数に分かりやすい名前を付けて、プログラム中にはその名前で定数を指定すると便利です。
それには、「Const」ステートメントを利用します。
Constのすぐ後の名前をプログラム中で使用します。このような定数定義を、モジュールの最初にまとめておくのが一般的な使い方です。




変数をプログラム内で利用するには、基本的には次のようなDimステートメントを利用します。






lつのDimステートメントでいくつもの変数を定義するには、2つ目の例のように、カンマで区切って定義を並べます。

 さて、ここで、いくつかの例外が出てきます。まず、変数は必ずDimステートメントで定義する必要はありません。
通常の状態では、Dimステートメントで定義しなくても、プログラム中でいきなり登場した文字列は、その名前が変数でるとして、
システム側で勝手に変数として定義します。このような状態を「暗黙の宣言」と呼んでいます。
別に変数の定義をしなくてよいわけですから、その方が手軽である利点はありますが、処理速度やメモリー効率は悪くなるとされています。


「暗黙の宣言」をやめるには

最初にrateとタイプして、後の方で同じ変数のつもりがタイプミスを行いrataとしていたとしましょう。
すると、変数rateと変数rataは別々のものとして扱うので、思ったような計算結果にはなりませんし、違っていることを指摘してはくれません。

Dimステートメントで定義していない変数があれば、エラーであると判断させる方法もあります。
モジュールの中で、プロシージャの定義が記述されているよりも前(宣言セクションという)の部分に

   Option Explicit

という宣言を記述しておきます。この記述のスコープは記述したモジュールだけになっています。
また、「Option Explicit」の宣言を自動的に挿入するには、「ツール」メニューの「オプション」を選択し、「モジュール設定」のページを表示します。

そこに、「変数の宣言を強制する」というチェックボックスがあるので、これをオンにします。すると、新しいモジュールが作成されるときに、
自動的に「Option Explicit」が入力されます。

骨だからしっかりマスターして終了!!
又、後で帰ってくるところです!
【覚えた用語】
文字列の記述方法
日付の記述方法
名前付けの規則
Const
Dim
Option Explicit
戻る   No.2   No.2_2