[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/08/27(Sat) 18:23
投稿者名:あつし
Eメール:
URL :
タイトル:
変数の宣言について
変数の宣言には、Dim、Private、Public、Globalなるものが
ありますが、どのような場合に(どのような位置で)宣言して
使うものなのですか。

プロシージャの中だけの場合
 Dimで宣言

モジュール内の異なるプロシージャの間で、同じ変数を使う場合
 Privateで宣言

モジュール間(アプリケーション全体)で、同じ変数を使う場合
 Publicで宣言

という認識で良いのですか。

モジュール内の異なるプロシージャの間で使う場合は、モジュール
の最初に変数の宣言を記述しますが、そこで、Dim宣言をしても使用
できるのですか。Privateで宣言したのと同じ動きなのですか。

Publicの宣言ですが、BモジュールでPublic宣言した変数は、Aモジュール
やCモジュールでは、使えるのでしょうか。
紛らわし使い方はやめて、Publicの宣言は、標準モジュールでの方がよいの
でしょうか。

投稿時間:2005/08/27(Sat) 19:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 変数の宣言について
まず、ここの[変数関係]をご覧下さい。
それと質問の多くは、ご自分で実際に書いて見て試してみれば解る事かと
思います。(下記のような事等)

>モジュール内の異なるプロシージャの間で使う場合は、モジュール
>の最初に変数の宣言を記述しますが、そこで、Dim宣言をしても使用
>できるのですか。Privateで宣言したのと同じ動きなのですか。


又、付属のヘルプで [変数の適用範囲]で検索してご覧下さい。
その他色々ヘルプでも記載されているので疑問があれば思いつく語句で
ヘルプを検索して見て下さい。

投稿時間:2005/08/28(Sun) 10:20
投稿者名:あつし
Eメール:
URL :
タイトル:
Re^2: 変数の宣言について
ありがとうございます。

>モジュール内の異なるプロシージャの間で使う場合は、モジュール
>の最初に変数の宣言を記述しますが、そこで、Dim宣言をしても使用
>できるのですか。Privateで宣言したのと同じ動きなのですか。

Dimでも、Privateでも両方使えるのですね。
何故なんですかね。
何か違いとかでもあるんですか。

投稿時間:2005/08/28(Sun) 10:49
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 変数の宣言について
> Dimでも、Privateでも両方使えるのですね。
> 何故なんですかね。

大昔は、DimとGlobalで変数を宣言していたので、その時の名残でしょう。
当時は、PrivateやPublicといった「変数の適用範囲」を意識したキーワードがありませんでしたし。

投稿時間:2005/08/27(Sat) 22:56
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 変数の宣言について
# ヘルプ等では分かりにくいと思われる点についてだけ解説。

> 変数の宣言には、Dim、Private、Public、Globalなるものが
> ありますが、どのような場合に(どのような位置で)宣言して
> 使うものなのですか。

Globalの適用範囲(スコープ)は、Publicとほぼ同等の意味を持ちます。
ただしGlobalは、標準モジュールでしか利用できない、という違いがあります。

Globalは、Visual Basicの古いバージョンで使われていたキーワードで、
現在は Public に置きかえられています。(使用しないようにしましょう)


> 紛らわし使い方はやめて、Publicの宣言は、標準モジュールでの方がよいの
> でしょうか。
別に、フォームやクラス等で使っても構わないと思いますよ。

ただし、「カプセル化」の面から言えば、むやみにスコープを拡大すべきではありませんので、
できれば変数をPublicで宣言するのではなく、変数自体はPrivateで宣言し、それを必要に応じて、
Public(またはFriend)レベルのプロシージャとして公開する方法をお奨めします。

( hhttp://www.gj.il24.net/~nakasima/vb/tech/style/index.htm の コーディングスタイル 29.を参照 )

投稿時間:2005/08/28(Sun) 00:29
投稿者名:あつし
Eメール:
URL :
タイトル:
Re^2: 変数の宣言について
> できれば変数をPublicで宣言するのではなく、変数自体はPrivateで宣言し、それを必要に応じて、
> Public(またはFriend)レベルのプロシージャとして公開する方法をお奨めします。
>
> ( hhttp://www.gj.il24.net/~nakasima/vb/tech/style/index.htm の コーディングスタイル 29.を
参照 )
VBを初めてから日が浅いので、把握できていません。
すみませんが、もう少し教えていただけませんか。
「Public(またはFriend)レベルのプロシージャとして公開する方法」
「Friend」
について

投稿時間:2005/08/28(Sun) 11:09
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 変数の宣言について
> 「Public(またはFriend)レベルのプロシージャとして公開する方法」

各種モジュール(クラスモジュール、フォームモジュール、標準モジュール、DataEnviromnent等々)に

「Public Function ○○(…) As …」
「Public Sub ○○(…)」
「Public Property Get ○○(…) As …」
「Public Property Let ○○(…)」
「Public Property Set ○○(…)」

のようなプロシージャ宣言を付ける、という事です。(SubやFunctionはわかりますよね?)



> 「Friend」
Privateは、モジュール内専用ですが、Friend/Publicはモジュール外からも利用できます。

FriendとPublicの違いは、ActiveXコンポーネントを利用した場合に現れます。
Friendは、自プロジェクト内でしかアクセスできませんが、Publicの場合は
プロジェクト外からも利用する事ができます。


なお、どのような場合にPublic変数を使い、どのような場合はPublicプロシージャに
隠蔽させるべきかという点に関しては、ヘルプの★の項目を参照してください。
また、☆の項目も読んでおくと良いでしょう(理解は後回しでも良いので、まずは見るだけでも)。


[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
 └[プログラミング ガイド]
  └[Visual Basic を使ってできること]
   └[オブジェクト]
    ├[Visual Basic のオブジェクトについて知っておくべきこと]
    │└[オブジェクトに関する用語解説]☆
    └[クラスのプロパティおよびメソッドの追加]
     ├[クラスのプロパティの追加]☆
     ├[プロパティ プロシージャとパブリック変数]★
     └[Friend プロパティおよびメソッド]☆

投稿時間:2005/08/30(Tue) 01:41
投稿者名:あつし
Eメール:
URL :
タイトル:
Re^4: 変数の宣言について
解説、アドバイスありがとうございます。