パソコン悪戦苦闘記録

Wordマクロ「変数」の応用編 VBA

 Wordマクロのプログラミングにとって,「変数」は必須の知識です。
 前回は,「変数」の基礎を解説した記事でした。
    その前回の記事は、
       こちらをご覧ください。

 今回の記事は,前回で取り上げなかった部分,「変数の応用編」です。

【第1】文字列型変数

 Wordは文書作成のためのアプリケーションソフトですから,文字列を多く扱います。

 文字列型変数には,文字列を格納できます。
 文字列型変数を宣言するには,次のとおり記述します。
 Dim myMoji as String
 これによって,「myMoji」という名前の変数が,文字列型変数として使えるようになります。


 Dim myMoji as String

 myMoji = Documents(1).Name

 MsgBox "最初に開いた文書名は" & myMoji & "です。"


こういった使い方になります。

 文字列型変数には数字も格納できます。しかし,そこに格納された数字は,あくまでも「文字列としての数字」であって,計算で扱える数値ではありません。文字としての数字では,計算はできないのです。
 ですから、変数に格納する数値を使って計算しようとするときには,変数宣言に当たって,整数型(Integer)や長整数型(Long)のような数値型で宣言しておきましょう。

【第2】データ型の変換
 文字列としての数字と,計算で扱える数値とは異なる,そして文字としての数字では計算に使用できないと,上記【第1】で書きました。

 そこで文字列としての数字を,計算可能な数値として扱うためにはどうするか。その方法があるのです。
 答えは,「型変換関数」です。CInt関数は,データ型を整数型に変換します。


 Dim myToshi as String, mySuchi as Integer
 myToshi = "28"
 mySuchi = CInt(myToshi) + 10



 このようにして,「28」という文字が計算対象の数値「28」に変換され、計算が可能となります。変数mySuchiには、「28+10」の計算結果「38」が格納されます。

【第3】オブジェクト型変数
 変数には,オブジェクト型変数というものがあります。その変数にはオブジェクトの参照を格納できます。
 Dim myDoc As Document
 この宣言によって,「myDoc」は,オブジェクト変数となります。
そして,
 Set myDoc = Documents.Add
 これによって,「myDoc」には,「新規文書への参照」が格納されます。
 myDocに格納されているのは,「Documents.Add」という文字列ではありません。新規文書というオブジェクトへの参照が格納されるのです。
 オブジェクトそのものが格納されているのと同じように扱うことが可能となります。

 オブジェクト型変数にオブジェクトの参照を格納するには,
上記のように「Set」を使います。
 myDocには新規文書への参照が格納されているので,
 myDoc.Content.InsertAfter "本日は晴天です。"
といった使い方ができます。

【第4】変数の適用範囲(有効期間)
 変数は,一時的に値を保持します。この一時的というのはいつまでか,変数にはいつまで値が保持され続けるのか,この範囲,期間のことを「変数の適用範囲(有効期間)」と呼びます。
 変数を宣言する場所や,宣言に使う用語(命令文)によって,変数の適用範囲が異なります。

1 プロシージャレベルの変数
 プロシージャとは,SubからEnd Subまでの間に記述されるプログラムのかたまり(一単位)のことです。
 プロシージャの中で,Dimを使って宣言した変数は,そのプロシージャの中だけで有効です。これがプロシージャレベルの変数です。
 他のプロシージャから参照することはできませんし,また,プロシージャを終了すると値も破棄されます。

2 モジュールレベルの変数
 「モジュール」とは,Visual Basicを使って作成したプログラムを管理する入れ物,プログラムの記述場所です。モジュールにはクラスモジュールと標準モジュールの2種類がありますが,通常使用するのはそのうちの標準モジュールです。1つの宣言セクションと複数のプロシージャで構成されます。
 「宣言セクション」とは,モジュールの先頭から最初のプロシージャまでの領域のことです。この宣言セクションで,Dimを使って宣言される変数がモジュールレベル変数です。
 このようなモジュールレベル変数は,そのモジュールにあるすべてのプロシージャ内で使用できます。モジュールレベル変数に格納された値は,プロシージャの実行が終了してもそのまま保持され続けます。
 このモジュールレベルの変数はかなり便利で,私も使うことがあります。

3 パブリック変数
 モジュールの宣言セクションで,Publicを使って宣言した変数のことです。モジュールレベル変数はDimで宣言しますが,パブリック変数では、Dimの代わりにPublicを使います。この変数は,すべてのモジュールのプロシージャで使用できます。
 モジュールレベル変数は,別のモジュールにあるプロシージャ内では使用できないのに対し,パブリック変数ではそれが可能となるのです。
 ただし,Wordマクロでは,それほど大がかりなシステムを組むことはないので,パブリック変数まで使うことはほとんどないと思われます。

 

ソニー SONY ワイヤレスノイズキャンセリングイヤホン WF-1000XM3 : 完全ワイヤレス/Bluetooth/ハイレゾ相当 最大6時間連続再生 2019年モデル ブラック WF-1000XM3 B
価格: ¥24,471
ソニー(SONY)

それでは、また次の記事で。

コメント一覧

goosyun
  UNIX、 Linux、 Windows、 MacOS、 Android と、多くの先人の知恵の積み重ねでOSの開発が行われて、現代の私たちはその恩恵を受けています。ありがたいことです。
 詳しい知識のない一般人(凡人)でも、コンピューターを扱えるのですから。OSのおかげです。
 フィンランドのリーナス・トーバルズが一般公開したカーネルに端を発して、現代のLinuxに発展したことには、特に感動を覚えます。
 akiy3 さん、コメントありがとうございます。
    【goosyun】
akiy3
OSを考えた人達は、「 天才 」これを使う人(自分)は 凡才 !
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事